【机器学习】Java 代码实现 CART 决策树算法
文章目录
- 一、决策树算法
- 二、CART 决策树
- 三、Java 代码实现
- 3.1 TrainDataSet
- 3.2 DataType
- 3.3 PredictResult
- 3.4 CartDecisionTree
- 3.5 Run
一、决策树算法
关于决策树算法的详细介绍可以参考我的另一篇博客:【机器学习】Decision Tree 决策树算法详解 + Python代码实战
二、CART 决策树
CART(classification and regression tree)树:又称为分类回归树,从名字可以发现,CART树既可用于分类,也可以用于回归。
当数据集的因变量是离散值时,可以采用CART分类树进行拟合,用叶节点概率最大的类别作为该节点的预测类别。
当数据集的因变量是连续值时,可以采用CART回归树进行拟合,用叶节点的均值作为该节点预测值。
本文实现的是 CART 分类树,其实就是采用 GINI 系数作为特征选择依据的决策树
三、Java 代码实现
3.1 TrainDataSet
TrainDataSet:训练数据集存放对象
public class TrainDataSet {/*** 特征集合**/public List<Object[]> features = new ArrayList<>();/*** 数据类型数组**/DataType[] dataTypes;/*** 标签集合**/public List<String> labels = new ArrayList<>();/*** 特征向量维度**/public int featureDim;public TrainDataSet(DataType[] dataTypes) {this.dataTypes = dataTypes;this.featureDim = dataTypes.length;}public int size() {return labels.size();}public Object[] getFeature(int index) {return features.get(index);}public String getLabel(int index) {return labels.get(index);}public void addData(Object[] feature, String label) {if (featureDim != feature.length) {throwDimensionMismatchException(feature.length);}features.add(feature);labels.add(label);}public void throwDimensionMismatchException(int errorLen) {throw new RuntimeException("DimensionMismatchError: 你应该传入维度为 " + featureDim + " 的特征向量 , 但你传入了维度为 " + errorLen + " 的特征向量");}}
3.2 DataType
DataType:一个枚举类,用来指示特征是数值型的还是字符型的
public enum DataType {// 字符串String,// 数字Number;
}
3.3 PredictResult
PredictResult:预测结果对象
public class PredictResult {String[] labelArr;String predictLabel;double[] predictArr;public PredictResult(String[] labelArr, String predictLabel, double[] predictArr) {this.labelArr = labelArr;this.predictLabel = predictLabel;this.predictArr = predictArr;}@Overridepublic String toString() {return "PredictResult{" +"predictLabel='" + predictLabel + '\'' +", predictArr=" + CartDecisionTree.predictArrToString(predictArr, labelArr) +'}';}
}
3.4 CartDecisionTree
CartDecisionTree:CART 决策树算法对象
public class CartDecisionTree {/*** 训练的数据集**/TrainDataSet trainDataSet;/*** 所有分类类型集合**/String[] labelArr;/*** 限制树的深度**/Integer maxDeep;/*** 限制叶子节点的个数**/Integer maxLeafNum;/*** 限制每个节点的样本数**/Integer minDataSize;/*** 决策树**/DecisionTree root;public CartDecisionTree(TrainDataSet trainDataSet, Integer maxDeep, Integer maxLeafNum, Integer minDataSize) {this.trainDataSet = trainDataSet;this.maxDeep = maxDeep;this.maxLeafNum = maxLeafNum;this.minDataSize = minDataSize;// 将 Label 去重,获取所有类别HashSet<String> labelSet = new HashSet<>(trainDataSet.labels);this.labelArr = new String[labelSet.size()];int i = 0;for (String label : labelSet) {this.labelArr[i++] = label;}}public void initModel() {root = createLeafNode(1, trainDataSet.features, trainDataSet.labels, new boolean[trainDataSet.featureDim]);}// 传入特征向量,返回预测值public PredictResult predict(Object[] features) {DecisionTree tree = root;while (tree.condition != null) {int featureIndex = tree.condition.featureIndex;if (trainDataSet.dataTypes[featureIndex].equals(DataType.String)) {// 字符类型的分支下走List<String> stringList = (List<String>) tree.condition.conditionValue;for (int i = 0; i < stringList.size(); i++) {if (stringList.get(i).equals((String) features[featureIndex])) {tree = tree.children.get(i);break;}}} else {// 数字类型的分支下走:左子树为 >= ,右子树为 <if ((double) features[featureIndex] >= (double) tree.condition.conditionValue) {tree = tree.children.get(0);} else {tree = tree.children.get(1);}}}return new PredictResult(labelArr, tree.predictLabel, tree.predictArr);}public void fit() {initModel();// BFS 构建决策树Queue<DecisionTree> queue = new LinkedList<>();queue.add(root);while (!queue.isEmpty()) {// 从队列中取出当前要构建的不完整的决策树(只有树深度、数据和最可能的标签,还没有分支条件和子节点)DecisionTree decisionTree = queue.poll();// 对特征进行遍历,找到分支后GINI系数最小的特征进行分支BranchResult bestBranchResult = null;// 预剪枝:限制树的深度if (maxDeep == null || decisionTree.deep + 1 <= maxDeep) {for (int featureIndex = 0; featureIndex < trainDataSet.featureDim; featureIndex++) {// 只对没被禁忌的特征进行计算if (!decisionTree.featureTabuArr[featureIndex]) {BranchResult branchResult = null;if (trainDataSet.dataTypes[featureIndex].equals(DataType.String)) {// 对字符串类型的特征进行分支branchResult = stringBranch(featureIndex, decisionTree);} else {// 对数字类型的特征进行分支branchResult = numberBranch(featureIndex, decisionTree);}if (branchResult != null) {if (bestBranchResult == null || branchResult.gini < bestBranchResult.gini) {bestBranchResult = branchResult;}}}}}// 将最佳分支结果中的节点加入队列,并将其加入当前节点的子节点集合if (bestBranchResult != null) {decisionTree.children.addAll(bestBranchResult.decisionTreeList);decisionTree.condition = bestBranchResult.condition;for (DecisionTree child : decisionTree.children) {// 如果最佳分支是字符串型分支,那么可以直接禁忌,之后不用再对那个特征进行分支if (bestBranchResult.condition.dataType.equals(DataType.String)) {child.featureTabuArr = decisionTree.featureTabuArr.clone();child.featureTabuArr[bestBranchResult.condition.featureIndex] = true;} else {child.featureTabuArr = decisionTree.featureTabuArr.clone();}child.deep = decisionTree.deep + 1;}queue.addAll(decisionTree.children);}// 预剪枝:限制叶子节点的个数if (maxLeafNum != null && queue.size() >= maxLeafNum) {break;}}root.print();}// 对数字类型的特征进行分支(对每两个数字中间的值进行分支)private BranchResult numberBranch(int featureIndex, DecisionTree decisionTree) {BranchResult bestBranchResult = null;// 记录已经计算过的二分实数(用字符串是为了避免浮点型变量精度带来的 hash 失效,字符串是数字保留 6 位有效数字的结果),还有一个辅助作用,就是对数值特征值进行去重HashSet<String> valueSet = new HashSet<>();// 首先获取所有数值List<Double> valueList = new ArrayList<>();for (int i = 0; i < decisionTree.features.size(); i++) {double v = (double) decisionTree.features.get(i)[featureIndex];if (valueSet.add(String.format("%.6f", v))) {valueList.add(v);}}// 然后排序Collections.sort(valueList);// 然后就选取中间值进行分支尝试valueSet = new HashSet<>();for (int i = 0; i < valueList.size() - 1; i++) {double mid = (valueList.get(i) + valueList.get(i + 1)) / 2.0;if (valueSet.add(String.format("%.6f", mid))) {// 辅助计算 GINI 系数Map<String, Integer> leftMap = new HashMap<>();Map<String, Integer> rightMap = new HashMap<>();// 初始化左右节点 左子树为 >= ,右子树为 <DecisionTree left = new DecisionTree();DecisionTree right = new DecisionTree();// 向左右节点加入数据for (int j = 0; j < decisionTree.features.size(); j++) {if ((double) decisionTree.features.get(j)[featureIndex] >= mid) {left.features.add(decisionTree.features.get(j));left.labels.add(decisionTree.labels.get(j));Integer cnt = leftMap.getOrDefault(decisionTree.labels.get(j), null);leftMap.put(decisionTree.labels.get(j), cnt == null ? 1 : cnt + 1);} else {right.features.add(decisionTree.features.get(j));right.labels.add(decisionTree.labels.get(j));Integer cnt = rightMap.getOrDefault(decisionTree.labels.get(j), null);rightMap.put(decisionTree.labels.get(j), cnt == null ? 1 : cnt + 1);}}// 预剪枝:限制每个节点的样本数if (minDataSize != null) {if (left.labels.size() < minDataSize || right.labels.size() < minDataSize) {continue;}}// 计算 GINI 系数double leftGINI = (double) left.labels.size() / decisionTree.labels.size() * GINI(left.labels.size(), leftMap);double rightGINI = (double) right.labels.size() / decisionTree.labels.size() * GINI(right.labels.size(), rightMap);double gini = leftGINI + rightGINI;if (bestBranchResult == null || gini < bestBranchResult.gini) {bestBranchResult = new BranchResult();bestBranchResult.gini = gini;// 左子树为 >= ,右子树为 <calcPredictLabelAndArr(left, leftMap);calcPredictLabelAndArr(right, rightMap);bestBranchResult.decisionTreeList.add(left);bestBranchResult.decisionTreeList.add(right);bestBranchResult.condition = new Condition(DataType.Number, featureIndex, mid);}}}return bestBranchResult;}// 对字符串类型的特征进行分支private BranchResult stringBranch(int featureIndex, DecisionTree decisionTree) {// 开始根据指定特征进行分组Map<String, DecisionTree> decisionTreeListMap = new HashMap<>();// 辅助 GINI 系数计算的 Map ,存储当前 feature 的不同取值下,label 的不同取值的个数Map<String, Map<String, Integer>> giniCalcMap = new HashMap<>();for (int i = 0; i < decisionTree.features.size(); i++) {String key = (String) (decisionTree.features.get(i)[featureIndex]);if (!decisionTreeListMap.containsKey(key)) {decisionTreeListMap.put(key, new DecisionTree());giniCalcMap.put(key, new HashMap<>());}decisionTreeListMap.get(key).features.add(decisionTree.features.get(i));decisionTreeListMap.get(key).labels.add(decisionTree.labels.get(i));Integer cnt = giniCalcMap.get(key).getOrDefault(decisionTree.labels.get(i), null);giniCalcMap.get(key).put(decisionTree.labels.get(i), cnt == null ? 1 : cnt + 1);}// 如果 decisionTreeListMap 的 size 为 1,说明当前节点当前特征已经纯了,那么就不用对这个特征进行分支了,所以可以直接返回 nullif (decisionTreeListMap.size() <= 1) {return null;}// 预剪枝:限制每个节点的样本数if (minDataSize != null) {for (String key : decisionTreeListMap.keySet()) {if (decisionTreeListMap.get(key).labels.size() < minDataSize) {return null;}}}// 计算GINI系数,并生成 BranchResultList<DecisionTree> decisionTreeList = new ArrayList<>();List<String> conditionValue = new ArrayList<>();double gini = 0d;for (String key : decisionTreeListMap.keySet()) {DecisionTree tree = decisionTreeListMap.get(key);calcPredictLabelAndArr(tree, giniCalcMap.get(key));decisionTreeList.add(tree);conditionValue.add(key);// 计算 GINI 系数double rate = ((double) tree.labels.size() / decisionTree.labels.size());gini += (rate * GINI(tree.labels.size(), giniCalcMap.get(key)));}BranchResult branchResult = new BranchResult();branchResult.gini = gini;branchResult.decisionTreeList = decisionTreeList;branchResult.condition = new Condition(DataType.String, featureIndex, conditionValue);return branchResult;}// 根据一个特征取值的 GINI 系数private double GINI(int totalCnt, Map<String, Integer> map) {double gini = 1d;for (String key : map.keySet()) {gini -= Math.pow(((double) map.get(key) / totalCnt), 2);}return gini;}// 获取一个叶子节点private DecisionTree createLeafNode(int deep, List<Object[]> features, List<String> labels, boolean[] featureTabuArr) {DecisionTree leaf = new DecisionTree();leaf.features = features;leaf.labels = labels;leaf.deep = deep;leaf.featureTabuArr = featureTabuArr;calcPredictLabelAndArr(leaf, labels);return leaf;}// 获取最多的标签private void calcPredictLabelAndArr(DecisionTree tree, List<String> labels) {Map<String, Integer> map = new HashMap<>();String mostLabel = null;int mostNum = -1;for (String label : labels) {Integer num = map.getOrDefault(label, null);map.put(label, num == null ? 1 : num + 1);if (map.get(label) > mostNum) {mostNum = map.get(label);mostLabel = label;}}if (mostNum == -1) {throw new RuntimeException("没找到最多的标签");}int totalCnt = 0;for (String label : map.keySet()) {totalCnt += map.get(label);}double[] predictArr = new double[labelArr.length];for (int i = 0; i < labelArr.length; i++) {predictArr[i] = (double) map.getOrDefault(labelArr[i], 0) / totalCnt;}tree.predictLabel = mostLabel;tree.predictArr = predictArr;}private void calcPredictLabelAndArr(DecisionTree tree, Map<String, Integer> map) {String mostLabel = null;int mostNum = -1;int totalCnt = 0;for (String label : map.keySet()) {if (map.get(label) > mostNum) {mostNum = map.get(label);mostLabel = label;}totalCnt += map.get(label);}if (mostNum == -1) {throw new RuntimeException("没找到最多的标签");}double[] predictArr = new double[labelArr.length];for (int i = 0; i < labelArr.length; i++) {predictArr[i] = (double) map.getOrDefault(labelArr[i], 0) / totalCnt;}tree.predictLabel = mostLabel;tree.predictArr = predictArr;}// 将概率向量字符串化public static String predictArrToString(double[] predictArr, String[] labelArr) {if (predictArr.length != labelArr.length) {throw new RuntimeException("传入的概率矩阵维度和类型数组长度不一致: " + predictArr.length + " != " + labelArr.length);}StringBuilder str = new StringBuilder("[ ");for (int i = 0; i < labelArr.length - 1; i++) {str.append(labelArr[i]).append(":").append(String.format("%.2f", predictArr[i])).append(" , ");}str.append(labelArr[labelArr.length - 1]).append(":").append(String.format("%.2f", predictArr[predictArr.length - 1])).append(" ]");return str.toString();}// 分支结果class BranchResult {// GINI系数double gini;// 分支后的节点集合List<DecisionTree> decisionTreeList = new ArrayList<>();// 分支条件Condition condition;}// 决策树class DecisionTree {Condition condition;List<Object[]> features = new ArrayList<>();List<String> labels = new ArrayList<>();List<DecisionTree> children = new ArrayList<>();// 特征走到当前节点最可能是的 LabelString predictLabel;// 预测属于每个类别的概率double[] predictArr;// 树当前的深度int deep;/*** 记录哪些特征不用分支**/boolean[] featureTabuArr;// 前序遍历输出自身信息public void print() {this.printSelf();for (DecisionTree child : children) {child.print();}}public void printSelf() {if (condition != null) {System.out.println("deep: " + deep + " , predictLabel: " + predictLabel + " , predictArr: " + predictArrToString(predictArr, labelArr) + " , featureIndex: " + condition.featureIndex + " , condition: " + condition.conditionValue);} else {System.out.print("deep: " + deep + " , predictLabel: " + predictLabel + " , predictArr: " + predictArrToString(predictArr, labelArr) + " , features: ");for (Object[] feature : features) {System.out.print(Arrays.toString(feature) + " , ");}System.out.println("labels: " + labels);}}}// 分支条件class Condition {DataType dataType;int featureIndex;/*** 如果 dataType 为 String,则 conditionValue 为 List<String>* 如果 dataType 为 Number,则 conditionValue 为 double,且左子树为 >= ,右子树为 <**/Object conditionValue;public Condition(DataType dataType, int featureIndex, Object conditionValue) {this.dataType = dataType;this.featureIndex = featureIndex;this.conditionValue = conditionValue;}}}
3.5 Run
Run:运行算法的类
public class Run {public static void main(String[] args) {// 测试纯文本的分类testStringData();// 测试纯数字的分类testNumberData();// 测试文本和数字混合的分类testStringAndNumberData();}public static void testStringData() {System.out.println("================================================================== 测试纯文本的分类 ==================================================================");// 构建纯文本特征的数据集TrainDataSet trainDataSet = new TrainDataSet(new DataType[]{DataType.String, DataType.String});trainDataSet.addData(new Object[]{"是", "单身"}, "否");trainDataSet.addData(new Object[]{"是", "已婚"}, "否");trainDataSet.addData(new Object[]{"否", "单身"}, "否");trainDataSet.addData(new Object[]{"是", "已婚"}, "否");trainDataSet.addData(new Object[]{"否", "离异"}, "是");trainDataSet.addData(new Object[]{"否", "已婚"}, "是");trainDataSet.addData(new Object[]{"是", "离异"}, "否");trainDataSet.addData(new Object[]{"否", "单身"}, "是");trainDataSet.addData(new Object[]{"否", "离异"}, "否");trainDataSet.addData(new Object[]{"否", "单身"}, "是");long startTime = System.currentTimeMillis();CartDecisionTree cartDecisionTree = new CartDecisionTree(trainDataSet, null, null, null);cartDecisionTree.fit();System.out.println("训练用时: " + (System.currentTimeMillis() - startTime) / 1000d + " s");System.out.println("用训练好的模型进行预测: ");System.out.println("TestData: " + Arrays.toString(new String[]{"是", "离异"}) + " : " + cartDecisionTree.predict(new Object[]{"是", "离异"}));System.out.println("TestData: " + Arrays.toString(new String[]{"否", "单身"}) + " : " + cartDecisionTree.predict(new Object[]{"否", "单身"}));System.out.println("TestData: " + Arrays.toString(new String[]{"否", "离异"}) + " : " + cartDecisionTree.predict(new Object[]{"否", "离异"}));System.out.println("TestData: " + Arrays.toString(new String[]{"否", "单身"}) + " : " + cartDecisionTree.predict(new Object[]{"否", "单身"}));}public static void testNumberData() {System.out.println("================================================================== 测试纯数字的分类 ==================================================================");// 构建纯文本特征的数据集TrainDataSet trainDataSet = new TrainDataSet(new DataType[]{DataType.Number});trainDataSet.addData(new Object[]{125d}, "否");trainDataSet.addData(new Object[]{100d}, "否");trainDataSet.addData(new Object[]{70d}, "否");trainDataSet.addData(new Object[]{120d}, "否");trainDataSet.addData(new Object[]{95d}, "是");trainDataSet.addData(new Object[]{60d}, "是");trainDataSet.addData(new Object[]{200d}, "否");trainDataSet.addData(new Object[]{85d}, "是");trainDataSet.addData(new Object[]{75d}, "否");trainDataSet.addData(new Object[]{90d}, "是");long startTime = System.currentTimeMillis();CartDecisionTree cartDecisionTree = new CartDecisionTree(trainDataSet, null, null, null);cartDecisionTree.fit();System.out.println("训练用时: " + (System.currentTimeMillis() - startTime) / 1000d + " s");System.out.println("用训练好的模型进行预测: ");System.out.println("TestData: " + Arrays.toString(new double[]{200d}) + " : " + cartDecisionTree.predict(new Object[]{200d}));System.out.println("TestData: " + Arrays.toString(new double[]{85d}) + " : " + cartDecisionTree.predict(new Object[]{85d}));System.out.println("TestData: " + Arrays.toString(new double[]{75d}) + " : " + cartDecisionTree.predict(new Object[]{75d}));System.out.println("TestData: " + Arrays.toString(new double[]{90d}) + " : " + cartDecisionTree.predict(new Object[]{90d}));}public static void testStringAndNumberData() {System.out.println("================================================================== 测试文本和数字混合的分类 ==================================================================");// 构建纯文本特征的数据集TrainDataSet trainDataSet = new TrainDataSet(new DataType[]{DataType.String, DataType.String, DataType.Number});trainDataSet.addData(new Object[]{"是", "单身", 125d}, "否");trainDataSet.addData(new Object[]{"是", "已婚", 100d}, "否");trainDataSet.addData(new Object[]{"否", "单身", 70d}, "否");trainDataSet.addData(new Object[]{"是", "已婚", 120d}, "否");trainDataSet.addData(new Object[]{"否", "离异", 95d}, "是");trainDataSet.addData(new Object[]{"否", "已婚", 60d}, "是");trainDataSet.addData(new Object[]{"是", "离异", 200d}, "否");trainDataSet.addData(new Object[]{"否", "单身", 85d}, "是");trainDataSet.addData(new Object[]{"否", "离异", 75d}, "否");trainDataSet.addData(new Object[]{"否", "单身", 90d}, "是");long startTime = System.currentTimeMillis();CartDecisionTree cartDecisionTree = new CartDecisionTree(trainDataSet, null, null, null);cartDecisionTree.fit();System.out.println("训练用时: " + (System.currentTimeMillis() - startTime) / 1000d + " s");System.out.println("用训练好的模型进行预测: ");System.out.println("TestData: " + Arrays.toString(new Object[]{"是", "离异", 200d}) + " : " + cartDecisionTree.predict(new Object[]{"是", "离异", 200d}));System.out.println("TestData: " + Arrays.toString(new Object[]{"否", "单身", 85d}) + " : " + cartDecisionTree.predict(new Object[]{"否", "单身", 85d}));System.out.println("TestData: " + Arrays.toString(new Object[]{"否", "离异", 75d}) + " : " + cartDecisionTree.predict(new Object[]{"否", "离异", 75d}));System.out.println("TestData: " + Arrays.toString(new Object[]{"否", "单身", 90d}) + " : " + cartDecisionTree.predict(new Object[]{"否", "单身", 90d}));}}
运行输出如下:
================================================================== 测试纯文本的分类 ==================================================================
deep: 1 , predictLabel: 否 , predictArr: [ 否:0.60 , 是:0.40 ] , featureIndex: 0 , condition: [否, 是]
deep: 2 , predictLabel: 是 , predictArr: [ 否:0.33 , 是:0.67 ] , featureIndex: 1 , condition: [已婚, 离异, 单身]
deep: 3 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [否, 已婚] , labels: [是]
deep: 3 , predictLabel: 否 , predictArr: [ 否:0.50 , 是:0.50 ] , features: [否, 离异] , [否, 离异] , labels: [是, 否]
deep: 3 , predictLabel: 是 , predictArr: [ 否:0.33 , 是:0.67 ] , features: [否, 单身] , [否, 单身] , [否, 单身] , labels: [否, 是, 是]
deep: 2 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , featureIndex: 1 , condition: [已婚, 离异, 单身]
deep: 3 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [是, 已婚] , [是, 已婚] , labels: [否, 否]
deep: 3 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [是, 离异] , labels: [否]
deep: 3 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [是, 单身] , labels: [否]
训练用时: 0.026 s
用训练好的模型进行预测:
TestData: [是, 离异] : PredictResult{predictLabel='否', predictArr=[ 否:1.00 , 是:0.00 ]}
TestData: [否, 单身] : PredictResult{predictLabel='是', predictArr=[ 否:0.33 , 是:0.67 ]}
TestData: [否, 离异] : PredictResult{predictLabel='否', predictArr=[ 否:0.50 , 是:0.50 ]}
TestData: [否, 单身] : PredictResult{predictLabel='是', predictArr=[ 否:0.33 , 是:0.67 ]}
================================================================== 测试纯数字的分类 ==================================================================
deep: 1 , predictLabel: 否 , predictArr: [ 否:0.60 , 是:0.40 ] , featureIndex: 0 , condition: 97.5
deep: 2 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , featureIndex: 0 , condition: 110.0
deep: 3 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , featureIndex: 0 , condition: 122.5
deep: 4 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , featureIndex: 0 , condition: 162.5
deep: 5 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [200.0] , labels: [否]
deep: 5 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [125.0] , labels: [否]
deep: 4 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [120.0] , labels: [否]
deep: 3 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [100.0] , labels: [否]
deep: 2 , predictLabel: 是 , predictArr: [ 否:0.33 , 是:0.67 ] , featureIndex: 0 , condition: 80.0
deep: 3 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , featureIndex: 0 , condition: 87.5
deep: 4 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , featureIndex: 0 , condition: 92.5
deep: 5 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [95.0] , labels: [是]
deep: 5 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [90.0] , labels: [是]
deep: 4 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [85.0] , labels: [是]
deep: 3 , predictLabel: 否 , predictArr: [ 否:0.67 , 是:0.33 ] , featureIndex: 0 , condition: 65.0
deep: 4 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , featureIndex: 0 , condition: 72.5
deep: 5 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [75.0] , labels: [否]
deep: 5 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [70.0] , labels: [否]
deep: 4 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [60.0] , labels: [是]
训练用时: 0.007 s
用训练好的模型进行预测:
TestData: [200.0] : PredictResult{predictLabel='否', predictArr=[ 否:1.00 , 是:0.00 ]}
TestData: [85.0] : PredictResult{predictLabel='是', predictArr=[ 否:0.00 , 是:1.00 ]}
TestData: [75.0] : PredictResult{predictLabel='否', predictArr=[ 否:1.00 , 是:0.00 ]}
TestData: [90.0] : PredictResult{predictLabel='是', predictArr=[ 否:0.00 , 是:1.00 ]}
================================================================== 测试文本和数字混合的分类 ==================================================================
deep: 1 , predictLabel: 否 , predictArr: [ 否:0.60 , 是:0.40 ] , featureIndex: 0 , condition: [否, 是]
deep: 2 , predictLabel: 是 , predictArr: [ 否:0.33 , 是:0.67 ] , featureIndex: 2 , condition: 80.0
deep: 3 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , featureIndex: 1 , condition: [离异, 单身]
deep: 4 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [否, 离异, 95.0] , labels: [是]
deep: 4 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , featureIndex: 2 , condition: 87.5
deep: 5 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [否, 单身, 90.0] , labels: [是]
deep: 5 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [否, 单身, 85.0] , labels: [是]
deep: 3 , predictLabel: 否 , predictArr: [ 否:0.67 , 是:0.33 ] , featureIndex: 1 , condition: [已婚, 离异, 单身]
deep: 4 , predictLabel: 是 , predictArr: [ 否:0.00 , 是:1.00 ] , features: [否, 已婚, 60.0] , labels: [是]
deep: 4 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [否, 离异, 75.0] , labels: [否]
deep: 4 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [否, 单身, 70.0] , labels: [否]
deep: 2 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , featureIndex: 1 , condition: [已婚, 离异, 单身]
deep: 3 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , featureIndex: 2 , condition: 110.0
deep: 4 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [是, 已婚, 120.0] , labels: [否]
deep: 4 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [是, 已婚, 100.0] , labels: [否]
deep: 3 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [是, 离异, 200.0] , labels: [否]
deep: 3 , predictLabel: 否 , predictArr: [ 否:1.00 , 是:0.00 ] , features: [是, 单身, 125.0] , labels: [否]
训练用时: 0.011 s
用训练好的模型进行预测:
TestData: [是, 离异, 200.0] : PredictResult{predictLabel='否', predictArr=[ 否:1.00 , 是:0.00 ]}
TestData: [否, 单身, 85.0] : PredictResult{predictLabel='是', predictArr=[ 否:0.00 , 是:1.00 ]}
TestData: [否, 离异, 75.0] : PredictResult{predictLabel='否', predictArr=[ 否:1.00 , 是:0.00 ]}
TestData: [否, 单身, 90.0] : PredictResult{predictLabel='是', predictArr=[ 否:0.00 , 是:1.00 ]}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4505574.html
如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!
数据库的分库分表
读写分离主要应对的是数据库读并发,没有解决数据库存储问题。 如果MySQL一张表的数据量过大怎么办?换而言之,我们如何解决MySQL的存储压力? 解决方案:分库分表 什么是分库? 分库 就是将数据库中的数据分…...
Github即将破百万的PDF:编写高质量代码改善JAVA程序的151个建议
问题产生的根源,犹如醍醐灌顶,让人豁然开朗。 全书-共12章,第1~ 3章针对Java语法本身提出了51条建议,例如覆写变长方法 时应该注意哪些事项、final 修饰的常量不要在运行期修改、匿名类的构造函数特殊在什么 地方等:第4~9章重点…...

Mac--PHP已经开启gd扩展验证码不显示
错误显示:Call to undefined function imagettftext() 原因: mac系统中自带的php的gd库中,缺少对freetype的支持,导致图片无法显示。 解决: 1 下载freetype,安装即可 下载地址:https://download…...

关于软件的一些庸人自乐
关于软件的一些庸人自乐 2010年 跟一个同事聊天,说到自己要是有兴趣想写点什么漫无边际的东西吧,比如写个tcpip的server,想写的规范一点,通用一点,兴冲冲的上手,越写越觉得要考虑的太多,比如ip鉴权呀&…...

代码随想录算法训练营第十八天二叉树 java : .106 从中序与后序遍历序列构造二叉树113. 路径总和ii 112 路径总和 513.找树左下角的值
文章目录前言LeetCode 513.找树左下角的值题目讲解思路那么如何找最左边的呢?Leetcode 112 路径总和题目讲解LeetCode 113. 路径总和ii题目讲解Leetcode 106 从中序与后序遍历序列构造二叉树题目讲解前言 人的不幸在于他们不想走自己的那条路,总想走别人…...
开源开放 | OpenKG发布第二批并更新近十个新冠知识图谱开放数据集
2020年2月11日,世界卫生组织宣布了新型冠状病毒肺炎官方正式命名为 COVID-19,21日国家卫健委决定与世界卫生组织保持一致,中文名称不变。随着关于新型冠状病毒病毒疫情的不断发展,有关疫情的各类信息也在不断更新。OpenKG 紧随疫情…...

我是一个功利主义ACMer
如果你是一个真正热爱算法竞赛,热爱ACM的人,请关闭这篇博客,我害怕这篇博客的丧气会影响到你。坚持你的热爱!加油叭! 如题,从大一开始参加ACM训练起,我就是功利的。或者说,真正驱动我…...

python国内外研究现状-对当今Python 快速发展的研究与展望
对当今Python 快速发展的研究与展望 摘要:本文通过分析Python语言的发展历史、设计哲学、应用领域和优缺点,分析了Pytho近年来快速发展的原因。 一、Python 简史 Python 是由Guido van Rossum 在1989 年圣诞节期间开发的一种脚本语言。在Python 之前&…...

功利主义穆勒思维导图_浅析穆勒的功利主义思想及现实意义
03󰀁󰀁一、功利主义的思想渊源功利主义(utilitarianism),是一种以实际功效或者利益作为其道德标准的伦理学说。功利主义思想作为目前最具影响力的伦理理论体系之一,其萌芽可追溯至古希腊时期伊壁鸠鲁的快乐主义学说。其后,经由十七、十八世纪资产阶级的反…...

得失心
终究是我的得失心在作祟。我太注重形式了,或者是我过于狭隘,没有从长远角度来看问题。所以越往后其实我的路应该是更艰难了,因为之前我做错的事情太多,错过的也太多,从前觉得自己是幸运的,现在才觉察到&…...
京东某女程序员求助:刚入职就意外怀孕,纠结还能不能过试用期?网友:职场女性太难!...
女员工在职场上最大的困境就是结婚生子,许多公司在招聘时都会对女员工的结婚、怀孕时间提出要求,导致不少女员工不敢怀孕,生怕一个不小心就被辞退。一个京东女员工发帖求助:刚入职就怀孕了,真的不是故意的,…...

抖音世界杯直播的低延迟是怎么做到的?
动手点关注干货不迷路世界杯已经结束了,梅西带领阿根廷时隔三十六年之后终于如愿捧杯。抖音直播提供的 4K 超高清超低延迟看播能力给亿万观众留下了深刻的印象,决赛的 PCU 达到 3700w,在这样大规模并发下,如何能稳定流畅地做到更低…...

【论文笔记】Federated Learning for Wireless Communications: Motivation, Opportunities, and Challenges(综述
Federated Learning for Wireless Communications: Motivation, Opportunities, and ChallengesAuthors Solmaz Niknam, Harpreet S. Dhillon, Jeffrey H. ReedKeywordsAbstract 本文介绍了FL的总体思路,讨论了在5G网络中可能的应用,描述了无线通信环境中的关键技术挑战与关…...

超体故事:写作,我想少一些功利多一点真诚
loonggg读完需要4分钟速读仅需 2 分钟大家好,我是校长。前几天我在我的知识星球「突破圈层,个体崛起」当中,布置了写作训练营的第七期主题:关于写作的初心。写这个主题的意思很简单,就是希望能够从内心本质上去思考启发…...

js深浅拷贝:保证赋值后改变第二个变量的值,不影响第一个变量的值
对于基本数据来说,将一个变量赋值给另一个变量,第二个变量值改变了,不会影响第一个变量;但对于复杂类型中的对象来讲,将一个对象赋值给另外一个对象,其实是将放对象内容的地址赋值给了第二个对象࿰…...

CET-4 week7 融会贯通
融会贯通 Nothing is difficult to a man who wills. absolutely adj 绝对地 完全地 毫无疑问地 completely adv 完全地 完整地 完全 彻底This crazy bus schedule has got me completely confused(DEC2011 Listening) totally(一共的) When they told me she had gone …...

始料未及-- 元宇宙传来好消息,全球轰动
突然间,元宇宙着火了。 从表面上看,这是出乎意料的,很多人将其视为资本引发的存在。也正是因为如此,人们对元宇宙的看法才变得两极分化。 那些对元宇宙感兴趣的人会佩服它;屈服于元宇宙的人会以各种方式对其产生怀疑&…...

回望过去,感觉现在的自己十分功利
在学校也学了快大半个月了,连续的学习让我感觉自己自身的知识量飞速(对比自己以前两个星期一个算法,现在三天就一个,甚至更快)在增长,可是我莫名有种自己曾经为之自豪的东西丢了,是什么呢&#…...

高通量测序分析工具Bedtools使用介绍
http://blog.genesino.com/2018/04/bedtools/ Bedtools是处理基因组信息分析的强大工具集合,其主要功能如下: bedtools: flexible tools for genome arithmetic and DNA sequence analysis.usage: bedtools <subcommand> [options]The bedtoo…...

java语言代码大全及其含义,社招面试心得
前言 集合在我们日常开发使用的次数数不胜数,ArrayList/LinkedList/HashMap/HashSet信手拈来,抬手就拿来用,在 IDE 上龙飞凤舞,但是作为一名合格的优雅的程序猿,仅仅了解怎么使用API是远远不够的,如果在调用…...

A. Parallel Projection codeforces 1782A
Problem - A - Codeforces 题目大意:在立方体内的上表面和下表面各有一个点,从一个点出发,沿平行于坐标轴的方向在表面上走到另一个点的最短路径是多少 思路:因为无论怎么走,在z轴上走的长度都等于长方体的高&#x…...

jquery 页面滚动条回到顶部_jQuery实现滚动条返回顶部
html>$(function(){var zhengge $(document).height(); //是获取整个页面的高度var dangqian $(window).height();var chuizhi $(document).scrollTop() ;//alert(zhengge);//alert(dangqian);//alert(chuizhi);})$(window).scroll(function(){// 滚动条距离顶部的距离 大…...

python两个list取交集_使用 Python 获取两个列表的交集、并集、差集的常用方法 | Jin''''s Blog...
在数据处理中经常需要使用 Python 来获取两个列表的交集,并集和差集。在 Python 中实现的方法有很多,我平时只使用一两种我所熟悉的,但效率不一定最高,也不一定最优美,所以这次想把常用的方法都搜集总结一下。 intersection-union-difference 交集(Intersection)>>&…...

C# 使用nco3.0 访问SAP提示“SAP.Middleware.Connector.RfcConfigParameters”的类型初始值设定项引发异常。
问题如下: C# 使用nco3.0 访问SAP时提示“SAP.Middleware.Connector.RfcConfigParameters”参数初始化错误; 解决办法: 安装NCO3.0依赖环境:VC 2010(.NET4.*);VC2005(.NET2) 参考:…...
eBPF Internal: Instructions and Runtime | 凌云时刻
凌云时刻 技术导读:eBPF 是最近几年异常火爆的一门内核技术,从2011年开发至今,eBPF 社区依然非常活跃。eBPF 可以通过热加载的方式动态的获取、修改内核中的关键数据和执行逻辑,避免内核模块的方式可能会引入宕机风险,…...

在教育孩子上少一点功利心,就会快乐?
转眼间,孩子已经长大,面临着毕业考试。面对着越来越紧迫的日子,我的焦灼也日益增长了。开始因为学习而和亮产生不愉快的情绪,几乎天天都有。面对做不完的题目和写不完的作文,不能看自己喜欢的书,不能做自己…...

试用期离职感想
四月份从北京来到南京谋生,选择了一家医疗行业的软件研发公司,公司本部并不在南京,面试时,感到公司的环境还好,自己要求的待遇也被接受了。没有多想,就来报到了。 第一天上班,感觉有些惊讶&…...
SQL学习笔记 | 02 SQL语句结构
SQL学习笔记 | 02 SQL语句结构一、表的导入1、表的命名2、导入步骤3、导入需注意二、标准SQL语法1、语句结构2、数据表的其他关键词3、SQL语句的分类一、表的导入 1、表的命名 2、导入步骤 双击数据库后,点击导入 字段名行:列名 在第一行 日期排序&…...

Linux使用ACL控制对文件的访问
文章目录1. 查看文件ACL2. 解释文件ACL3. 更改ACL文件权限setfacl命令1) 以递归方式更新现有 cases 目录及其内容。2) 以递归方式更新现有cases 目录及其内容。3) 为contractors 组成员更新默认权限。默认权限为读取、写入和执行3.1.4) 为contractor3用户更新默认权限。默认权限…...

连接oracle数据库出现“ORA-12541:TNS:无监听程序”解决方法
安装了oracl数据库后,使用油桶工具进行数据库连接时,出现了“ORA-12541:TNS:无监听程序”的错误解决方法。 原因是:这两个服务没有开启! OracleOraDb10g_home3TNSListener:服务监听程序(报上面弹框的原因…...

Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程十六
原标题:Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程十六(Spring中国教育管理中心) 6.20.8.配置日志记录 要配置或调整 Apache Geode 日志记录,请使用 注释您的 Spring、Apache Geode 客户端或服务器应用程序类E…...

【Rust日报】2022-07-26 lurk - strace written in rust
lurk - strace written in rustJakob Waibel 是 IBM 的工程师,他最近发布了 lurk,这是一个非常简洁而美观的 strace 替代品,它实现了 strace 的绝大部分功能,并且在可读性上做出了很大程度的优化,旨在给用户带来更好的…...

基于机器学习算法svm、xgb、lgb的购房贷款违约预测实战
1.1 实验题目:购房贷款违约预测 任务:使用机器学习相关知识完成购房贷款违约预测,给定特征字段,输出是否会发生逾期的预测。 1.2 实验要求 1.2 题目背景 随着世界经济的蓬勃发展和中国改革开放的逐渐深入,无论是企业的发展还是从人们消费观念的转变,贷款已经成为企业和个…...

c,c++小白到大神系列教程之一:C语言入门-王健伟-专题视频课程
c,c小白到大神系列教程之一:C语言入门—1127人已学习 课程介绍 本课程针对 有一点计算机基础比如知道二进制、八进制、十六进制数据的含义,对内存、堆、栈等有基本概念的计算机初学者,全面介绍C语言精华内容以及利用C语言进行程序设计的方…...

试用期,必须跨过的那些坎
试用期,对于职场人来说,是道必须跨过的坎,而跨越得是否漂亮将直接导致你最后的去留。经过了跳槽金3月以及即将到来的大学生就业高峰,不少人正处于直面试用期的状态。2008年1月1日实施的《劳动合同法》中,将试用期的最长…...

功利心
大凡游戏竞赛,都有一种心态赢得比赛,然而越是功利心中,越是束手束脚,也发挥不出好水平,自己玩的也不尽兴。 乒乓球只是每天娱乐一下罢了,又不参加国际比赛,输了上场的机会就少,少玩一…...

文章发布后的阅读量只有个位数该怎么办?
上周末看了一场关于“写作”的技术分享直播,现场有不少的观众提问,印象比较深的问题是“文章发布后,阅读量不高、点赞量也不高,平台的推荐机制是不是有问题?后续平台会如何改善这种情况?”,应该…...

公司要求小时工必须干满4个月,否则离职后没有工资,这合法吗?
对于这种要求,肯定是不合法的,这就有“强迫劳动”的嫌疑了! 我们大家都知道,根据《劳动合同法》规定,在符合一定条件下,员工拥有离职的权利。 也就是说,试用期内提前三天通知公司,…...

HTML学习总结图
...

计算机人工智能的应用论文,人工智能的发展与应用论文整理.doc
人工智能的发展与应用论文整理巴州石油一中高中部巴州石油一中高中部研究性学习研究性学习人工智能的发展与应用人工智能的发展与应用作作 者: 谭承志王智贺潘永臻指导教师: 周朝晖Time \ "yyyy年M月d日"2011年Time \ "yyyy年M月d日"…...

这就是你日日夜夜想要的docker!!!---------Harbor私有仓库
文章目录一、Harbor私有仓库介绍1、什么是Harbor?有什么作用?2、harbor的特性3、harbor配置文件参数二、部署Harbor私有仓库1、harbor服务器安装harbor2、查看已经生成的镜像和容器3、测试4、harbor服务器字符界面镜像仓库测试5、client客户端harbor仓库…...

【UE4 第一人称射击游戏】34-制作一个简易计时器
上一篇:【UE4 第一人称射击游戏】33-创建一个迷你地图本篇效果:可以看到左上角有个简易的关卡计时器在倒计时步骤:打开“FPSHUD”,拖入一个图像控件图像选择“Timer_Backing”,尺寸改为4719拖入3个文本控件大小为1210字…...

浮躁心
原文地址:浮躁心作者: 佳桐看到一条微博:“任何人只要专注于一个领域,5年可以成为专家,10年可以成为权威,15年就可以成为世界顶尖。也就是说,只要你能在一个特定领域,投入7300个小时…...
试用期、见习期、实习期、合同期、服务期的区别与应用
在研究劳动合同,劳动关系的过程中,我们经常会遇到试用期、见习期、实习期、合同期、服务期等相关名词。如何正确区别以上各种概念,如何正确应用,是我们今天研究的话题。 试用期 根据《劳动法》和相关的规定,劳动合同可…...

基于海思HI3559CV100移植IMX178
主芯片:HI3559CV100 主芯片手册:Hi3559A╱C V100 ultra-HD Mobile Camera SoC 用户指南.pdf 主芯片MPP手册:HiMPP V4_Password_Removed.pdf SENSOR:IMX178 SENSOR手册:IMX178LQJ-C_Data_Sheet.pdf SDK:…...

apk加固后重签名-mac
apk加固后重签名签名工具的区别进入签名工具目录签名签名验证apk升级发版本前需要做安全检测,检测之前一般会进行加固处理,加固完成后,还需要对apk包进行重新签名。有文章说需要把apk原来的签名文件,即META-INF文件夹删除…...

使用axure9绘制三级导航
先放一张效果图👇 学习axure肯定会碰到需要做导航栏的时候,并且我觉得导航栏的设计是最基础的,但却不是最简单的交互效果。设计导航栏时,只需要将其想象成多个图层即可。因为axure是原型设计软件,就像一个会动的ps&…...

linux分析mirna,从高通量测序的数据中分析novel miRNA
做miRNA分析的人都知道,已有的miRNA注释并不完整,同时miRNA的表达有时间和空间的特异性,因此在进行miRNA的测序分析之后,大家往往会对其中的新的miRNA更感兴趣,在这里给大家介绍一款在植物当中,基于miRNA-s…...
NGS基础 - 高通量测序原理
NGS基础 - 高通量测序原理 原创: 赑屃 生信宝典 2017-07-23NGS系列文章包括NGS基础、转录组分析、ChIP-seq分析、DNA甲基化分析、重测序分析五部分内容。 NGS基础系列文章包括高通量测序原理,测序数据获取和质量评估,常见文件格式解释和转换4…...

新入职公司离职率高怎么办
过五关斩六将拿下一个offer,开开心心入职,有时候却发现跟想象中不太一样。新公司待了不到几周,就接连有同事离职,这让作为新员工的自己不免很慌。入职一家新公司,发现离职率很高,该怎么办呢? 一…...
在哪里读人工智能的论文?
一个读人工智能的论文网站:Paperswithcode 类别丰富,涵盖了各个人工智能的方向 跟进最新最热门的学术论文...

俄罗斯黑客组织Lurk与Angler与Necurs僵尸网络之间存在关联
许多安全专家怀疑,俄罗斯警方5月底逮捕黑客组织Lurk与之后钓鱼攻击工具包Angler Exploit Kit不明所以的停止更新之间存在关联。 Lurk黑客团伙被捕及随后的“巧合” 5月底,俄罗斯政府宣布,抓获涉嫌窃取4500万美元的黑客团伙,涉案人…...

【渝粤题库】广东开放大学 行政管理学 形成性考核
选择题 题目:提出使管理职能细化并实行“职能工长制”的管理学家是( ) 题目:市场机制遵循的是( )与效率的原则 题目:( )主张建立“和谐有效率”的组织,注重组织成员行为、动机研究,用民主方式管理、激励成员的积极性 题…...

【Paper】2020_Sliding Mode-Based Guidance for UAV Landing on a Stationary or Moving Ground Vehicle
Sliding Mode-Based Guidance for UAV Landing on a Stationary or Moving Ground Vehicle1 Introduction2 Problem Formulation2.1 Goal for Landing Guidance2.2 Equations of Motion3 Guidance Law Design3.1 Synthesis of Guidance Command3.2 Guidance Command Inputs4 D...

python 求两个list的交集
python 求两个list的交集 r list(set(data2).intersection(set(data))) print(r[0]*r[1])...

Dangers Lurk In Global Bond Mkts
决策者一定非常自得。全球债券市场似乎已经接受了官方利率可以维持在极低的水平,以提振经济,同时又不会引发通货膨胀的教义。美国和欧洲的债券收益率在过去一个月里出现下跌,而2年期德国政府债券收益率在周二创出了1.04%的低点,尽…...

ISCC部分pwn题解
前言 菜的扣脚的pwn手,整了四个题,实在是菜,感觉在学校没法把心静下来写blog。。。寒假完美完成了假期前的flag。但是到现在开学立的flag一个都没完成。。。。。。。 先把exp和分析过程贴上,后谜案补解析,小学期复现国…...

《左耳听风》-ARTS-打卡记录-第九周
Algorithm 680. 验证回文字符串 Ⅱ 我看leetcode这个题的难度为:简单,但却花了我好长时间,做的结果性能一般,被虐的生无可恋. 最开始采用的方法是脑子里最先蹦出来的,其实功能上没有问题,但耗时比较长,竟然被leetcode深深的鄙视了. class Solution { public:bool validPalindr…...

图像全景拼接
文章目录一、特征匹配1.Brute-Force蛮力匹配2.一对一的匹配3.k对最佳匹配二、随机抽样一致算法(Random sample consensus,RANSAC)三、全景拼接实战一、特征匹配 1.Brute-Force蛮力匹配 蛮力匹配就是暴力匹配,这里通过代码与实例…...

jquery html滚动条样式,jquery滚动条样式
特效描述:jquery 滚动条样式。jquery滚动条样式代码结构1. 引入JS2. HTML代码*{margin:0;padding:0;list-style-type:none;}a,img{border:0;}body{line-height:180%;font-size:12px;}a{color:#333;text-decoration:none;}a:hover{color:#ff6600;text-decoration:und…...

BigYear大年 她不是 伴奏 BigYear大年 我不会再去相信你了 高音质伴奏
BigYear大年 她不是 伴奏 BigYear大年 我不会再去相信你了 高音质伴奏BigYear大年 她不是 伴奏 BigYear大年 我不会再去相信你了 高音质伴奏...

BLUES吉他学习笔记004 bluesrv[8]
如何即兴08——37的问题 视频在优酷[bluesrv]频道,这里插入链接会导致blog被审核。 这节课是上节课的延伸,仍然讲的是3音和7音的运用,这里提到了一点,一个和弦的3音和7音作为能决定和弦性质的音(也称作导音࿰…...

吉他
X是在弹分解和弦里的标记,意思是要弹拨这根弦。比如X是标在第一弦,那么在按下和弦的情况下,弹拨第一弦。如果是几个X并排,意思是一起弹拨。比如: 就是在按住G和弦的情况下,依次弹6、3、1、2、3弦࿰…...

[ECE]模拟试题-5
在cluster1上有一task1索引,请编写一个查询并满足以下要求: ● 定义一个名为a的运行时字段,通过a字段实现以下聚合(a字段的值等于b字段减去c字段) ● 聚合a值小于-2的文档 ● 聚合-5到5之间的文档 ● 聚合大于5的文档DELETE task1 PUT task1 {"settings": {"…...
《济南济南》吉他弹唱
专辑:之外 歌手:陈小熊 歌曲:济南济南 我抬眼是千佛山的轮廓 我闭眼是大明湖和护城河趵突泉在我耳畔喷涌着可我却不清楚济南到底是啥样的它究竟是啥样的穿旗袍的姑娘你在哪儿呢说快板儿的大爷你在哪儿呢膈应人的小么都长大了半青的乡音有谁还…...

双吉他伴奏配合的有关问题
双吉他伴奏配合的有关问题参考资料概述双吉他伴奏的布局参考资料 《吉他自学三月通》 概述 双吉他弹奏是民谣吉他弹唱中常见的形式。所谓双吉他伴奏,并不是用两把吉他弹奏相同的伴奏内容为歌曲进行伴奏。而是通过两把吉他的配合,在节奏、旋律、指法、…...

实验二:逻辑门外特性的测试
实验二:逻辑门外特性的测试 一、实验目的 掌握 TTL 门电路各参数的意义及测试方法。 掌握 CMOS 门电路各参数的意义及测试方法。通过对门电路外特性的测试,更好地了解 TTL 与 CMOS 门电路的电气性能和特 点。进一步熟悉示波器的使用方法及分析波形图的能…...

fpga 扇入扇出
http://www.eefocus.com/liuyuxue/blog/13-11/300098_89976.html 今天在读fpga的综合报告时发现了一个问题fan-in和fan-out。当时就傻眼了,毛意思呀,我去一查原来是扇出,大爷的,当时上课时老师也没说过这玩意,就是自己…...

软件设计师考试 | 第六章 结构化开发方法 | 系统分析与设计概述
文章目录(一)系统分析概述1.系统分析的目的和任务2.系统分析的主要步骤(二)系统设计的基本原理1.抽象2.模块化3.信息隐蔽4.模块独立(1)耦合(2)内聚(三)系统总…...

【梳理】数字设计基础与应用 第2版 第2章组合逻辑电路分析与设计 2.1.1 集成逻辑门系列 2.1.2 集成逻辑门的主要电气指标
教材:数字设计基础与应用 第二版 邓元庆 关宇 贾鹏 石会 编著 清华大学出版社 源文档高清截图在后 第2章 组合逻辑电路分析与设计 2.1 集成逻辑门 1、数字电路从结构和功能上可以分为组合逻辑电路和时序逻辑电路。组合逻辑电路是由逻辑门级联而成的,没…...

上拉电阻、下拉电阻、拉电流、灌电流、扇出系数等基本概念
在使用数字集成电路时,拉电流输出和灌电流输出是一个很重要的概念,例如在使用反向器作输出显示时,图1是拉电流,即当输出端为高电平时才符合发光二极管正向连接的要求,但这种拉电流输出对于反向器只能输出零点几毫安的电流用这种方法想驱动二极管发光是不合理的(因发…...

【JS】快速入门DOM
目录 节点树 DOM属性 DOM方法 操作节点属性 操作节点文本 操作节点样式 事件绑定 节点获取方法 批量添加事件 事件对象 获取鼠标位置 节点树 概述:节点即为标签。节点之间这种关系,我们称之为‘节点树’。因为很想一颗大树扎根。 DOM【document object m…...

上拉电阻、下拉电阻 / 拉电流、灌电流 / 扇出系数
(一)上拉电阻: 当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平 (一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。 OC门电路必须加上拉电阻,…...
电路常识性概念(5)-上拉电阻、下拉电阻 / 拉电流、灌电流 / 扇出系数
电路常识性概念(5)-上拉电阻、下拉电阻 / 拉电流、灌电流 / 扇出系数(一)上拉电阻: 1、当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平 (一般为3.5V),这时就需要在T…...

什么是灌电流,拉电流和扇出系数
一个重要的前提:灌电流和拉电流是针对端口而言的。名词解释——灌:注入、填充,由外向内、由虚而实。渴了,来一大杯鲜榨橙汁,一饮而尽,饱了,这叫“灌”。 灌电流(sin…...

扇入、扇出、扇入系数及扇出系数
扇入系数,是指门电路允许的输入端数目。一般门电路的扇入系数 Nr 为 1--5,最多不超过 8。若芯片输入端数多于实际要求的数目,可将芯片多余输入端接高电平(5V)或接低电平(GND)。扇出系数,是指一个门的输出端所驱动同类型门的个数&a…...

数值计算优化方法C/C++(七)——奇异递归模板
奇异递归模板简介 奇异递归模板是模板的一种使用技巧,通常这种技巧和一种叫做静态多态特性一起出现。是一种继承时将子类型作为模板参数传给基类的一种模板使用方法。 奇异递归模板应用 对象计数 有时我们可能会需要对一些类型的对象计数,通常我们是…...

并行计算(二)——CUDA
并行计算(二)——CUDA 一、简介 CUDA是NVIDIA提供的一种通用的并行计算平台和编程模型,使用CUDA可以像在CPU上一样使用GPU进行编程。 CUDA要介绍的话东西实在太多了,而且GPU的工作原理和CPU尽管是有些相似的,但是实际使用的思路和CPU却可能…...

数值计算优化方法C/C++(六)——统计质数个数(访存优化以及vector-bool的坑)
(原谅我不知道标题里怎么加<>,标题里那个是vector<bool>) 这是最近看到一篇博客《3秒钟内统计出小于1亿的素数个数》激起了我的兴趣,然后做了许多测试,这里展示一下。 算法 首先说一下质数的统计算法,查找某个范围内…...

《Linux Shell脚本攻略》学习笔记-第九章
9.1 简介 计算机系统是由一组硬件及控制这些硬件的软件组成的。 Linux既提供了能够检查这些系统当前性能的交互式程序,也提供了用于记录一段时间内系统性能表现的模块。 9.2 监视磁盘使用情况 磁盘空间是一种有限的资源。 du和df命令可以报告磁盘使用情况࿰…...

数据中心节能从机房精密空调着手
节能降耗绿色环保是如今机房数据中心建设的主题要求,从机房精密空调节能着手,助力机房绿色节能建设。 机房精密空调内部系统包括由压缩机、冷凝器、膨胀阀及蒸发器等组成。精密空调的工作原理是制冷剂在压力温度下沸腾,直到低于被冷却物体或流…...

机房空调节能方案如何实施?
机房太耗电了,机房太耗电了,机房太耗电了!!!这是一个行业普遍存在的问题,也是个重大的负担!空调的能耗是首当其冲的,机房空调节能方案应该如何实施呢?造成机房空调能耗的…...

因地制宜选择机房节能空调
当前,数据中心耗能严峻,随之发作各种水冷空调体系,在挑选机房空调体系时,要量体裁衣,使之能够适应当地气候。数据中心耗能疑问实践上是很严峻的疑问,例如:深圳某银行体系的信息中心机房(建筑面积…...

数据中心节能:因地制宜选择机房空调
当前,数据中心耗能严重,随之产生各种水冷空调系统,在选择机房空调系统时,要因地制宜,使之能够适应当地气候。数据中心耗能问题实际上是很严重的问题,例如:深圳某银行系统的信息中心机房(建筑面积…...

暖通空调知识:机房节能减耗注意事项
制冷送风是“耗能大户” 数据中心的主要能耗设备主要有:IT设备和机房设备两大类。其中,IT设备包括服务器、存储备份设备以及终端等;机房设备包括UPS供电、配电设备、空调新风系统、监控设备等。 典型的数据中心中消耗电能最多的是空调、送风系统等机房环…...

机房空调节能最佳办法 数据中心的亲身体验
市场研究公司Gartner称,数据中心管理员采用11个最佳做法每年可节省数百万千瓦时。大多数这些做法都是不用费力或者预算的,或者仅需要较少的努力和预算。下面是Gartner提出的数据中心管理员的绿色IT的11种最佳做法。1.堵住活地板的空洞:大多数…...

【自学Docker】Docker环境命令
Docker info命令 Docker info命令概述 用于查看 docker 容器的基本信息。 Docker info命令语法 haicoder(www.haicoder.net)# docker info案例 查看所有信息 使用 docker info 命令,查看当前 docker容器 的所有的信息。 haicoder(www.haicoder.net)# docker …...

无理数的无理数次幂的结果可以是有理数?(以〖√2〗^√2为例)
proof: 1.假设〖√2〗^√2是有理数,则意味着〖√2〗的〖√2〗次幂是有理数,〖√2〗是无理数,则命题为真命题 2.假如〖√2〗^√2是无理数,〖√2〗也是无理数 又因为〖(〖√2〗√2)〗√22…...

证明:无理数乘以非零的有理数仍然是无理数
题目:设 aaa 是无理数,bbb 是非零有理数,则 ababab 一定是无理数。 反正法: 假设 ababab 是有理数,则 abcdab \frac{c}{d}abdc 其中 ccc,ddd 都是有理数。等式两边同除以 bbb,可得 acbda\f…...

[每日数学] 构造一组无理数a,b,使得a^b是有理数
[每日数学] 构造一组无理数a,ba,ba,b,使得aba^bab是有理数 前言:题目和解法来源知乎。 1:考虑e,ln2e,ln2e,ln2。 显然eln22e^{ln2}2eln22为有理数,因此我们只需证明ln2ln2ln2为无理数。 反证法:若ln2pq→epq2ep2qln2…...

证明√2是无理数
我们可以用反证法来证明。 证明 假设 2\sqrt 22 是有理数,那么根据有理数定义 2a/b\sqrt 2a/b2a/b,其中 a,ba, ba,b 是两个互质的整数且 b≠0b \neq 0b0。所以 2b2a22b^2a^22b2a2,由于 a,ba, ba,b 都是整数,所以很容易可…...
基础数学:关于二次无理数
一、 二次无理数 二次无理数(quadratic irrational)是某些有理数系数的一元二次方程的根。若将所有系数乘以分母的最小公倍数,即可将系数转换为整数。因此所有二次无理数都可以表示成 其中 为整数,是无平方数因数的数不为零。若…...

无理数的定义
分划 根据戴德金定理,若将全部的有理数所构成的集合分拆为两个非空集合(即其中至少包含一个数的集合)AAA、A′AA′,当它们满足下列条件时,则集合AAA称为分划的下组,集合A′AA′称为分划的上组,…...

无理数相关的几个证明
不存在平方等于m/nm/nm/n的有理数,除非m和nm和nm和n两者都是完全平方数(m/nm/nm/n既约)。 假设存在这样的有理数,则有p2/q2m/np^2/q^2m/np2/q2m/n,即np2mq2np^2mq^2np2mq2. 因此q2q^2q2的每个因子整除np2np^2np2&…...

php判断无理数,重新整理证明:无理数在数轴上不存在的逻辑证明
在现有的数学理论中,全体实数可以与数轴上的所有点形成一一对应的关系,从而全体实数能够填满整个数轴而不留任何空隙。实数包括有理数和无理数,假如将数轴上的所有无理数全部删除,使得数轴上只剩下有理数,那么这条数轴…...
php判断无理数,如何快速判断一个数的开方是不是无理数?
引言:学习完了统计之后,我们开始学习了实数,和我们之前学到了一些有理数,以及对无理数的一些认识进行了简单的回顾后,我们又对实数进行了深一步的探索,并掌握了一种新的运算是乘方的逆运算--开方最初接触开…...

证明pi是无理数
证明π\piπ是无理数 假设圆周率π\piπ是有理数,且p,qp,qp,q是两个互相互质的整数。那么: πpq\pi \frac{p}{q} πqp 我们尝试构造一个函数f(x)f(x)f(x)。其表达式如下: f(x)xn(p−qx)nn!(n∈N)f(x) \frac{x^n(p-qx)^n}{n!}(n \in N) f(x)n!xn(p−qx)n…...

无理数取模(二次剩余)
如果有理数 ak≡b(modp)a^k\equiv b\ (mod\ p)ak≡b (mod p),那么a≡bk(modp)a\equiv \sqrt[k]{b}\ (mod\ p)a≡kb (mod p)。 例如:3830080162≡6169919932≡5(mod1099)383008016^2\equiv 616991993^2 \equiv 5\ (mod\ 10^99)3830080162≡6169919932≡…...

java 无理数_《数学分析原理》笔记之——无理数的引入
说明:《数学分析原理》指 г.м.菲赫金哥尔茨 著《数学分析原理》(第一卷 第九版)高等教育出版社整数和分数统称为有理数。有理数域不能完全满足数学定义的需求,比如人们无法将一个边长为1的正方形的对角线长度表示为有理数,也即没有一个其平…...

java 无理数_Java 程序设计:有理数类
需求分析有理数是整数(正整数、0、负整数)和分数的统称,是整数和分数的集合。由于有理数的子集分别是整数和分数,因此对于类的属性的设计,需要提供满足这两种数的表达方式。由于有理数本质上是数,因此有理数类需要实现数能做的事&…...

有理数和无理数
实数(real number)分为有理数和无理数(irrational number)。 我们平时见到的整数和分数都是有理数,而π和e,大部分整数的平方根都是无理数。无理数的特点为: 1,不能用两个整数之比,即分数来表示。 2&…...

有理数和无理数(网摘)
实数:包括有理数和无理数,如下所示。 1、无理数:即无限不循环小数 2、有理数:除了无限不循环小数以外的实数统称有理数 (1)整数:正整数、0、负整数统称为整数。 (2)分数…...

深入理解 【有理数】、【无理数】、【虚数】
有理数 有理数出现的最早,它是伴随人们的生产实践而生产的。0也是有理数。有理数是整数和分数的集合,整数也可看做是分母为一的分数。注意,“无限循环小数” 也可以表示为有理数,是因为 “无限循环小数” 可以表示为分数。然后 “…...

iPhone 3GS iOS6.0.1不完美越狱教程+解锁
一、越狱 1. 使用iTunes刷成最新的iOS6.0.1系统。 2. 使用redsn0w_win_0.9.13dev4进行不完美越狱,注意开始越狱前,需要通过“Extras>Select IPSW”进行固件选择(注意,此时一定要选择:iOS6.0的估计,而不是…...

ios5.0不完美越狱
http://bbs.weiphone.com/read-htm-tid-2662357.html http://hi.baidu.com/tyc6982/blog/item/d2186eddfabd17c48c102922.html...

win10打开此计算机慢,win10系统打开此电脑很慢提示正在处理它的解决方法
很多小伙伴都遇到过win10系统打开此电脑很慢提示正在处理它的困惑吧,一些朋友看过网上零散的win10系统打开此电脑很慢提示正在处理它的处理方法,并没有完完全全明白win10系统打开此电脑很慢提示正在处理它是如何解决的,今天小编准备了简单的解…...

动态内存分配/管理
目录 1、为什么要有动态内存分配 2、动态内存函数介绍 1、malloc 2、free 3、calloc 编辑 4、realloc 3、动态内存常见的错误 4、动态内存开辟相关好题 5、c/c程序内存开辟示意图 int a, int arr[10] 是固定地向内存申请连续的一块空间,但不能变长或变…...

win7打开桌面计算机很慢,5个步骤解决Win7系统电脑软件打开速度慢问题
原标题:5个步骤解决Win7系统电脑软件打开速度慢问题Win7系统电脑用户一直是电脑用户量中占最大比的,所以小编在日常工作中接到win7系统电脑问题反馈的最多。在昨天,有用户表示,在自己电脑开机后,第一次打开软件速度都会…...

webstorm 一直 indexing 导致电脑慢
如题, 尝试一下方法: 右击node_modules dist 目录 选择 Mark Directory as, 选择exclueded 即可。 发现node_modules目录颜色也变了。 从这个操作上我们可以看出,就是不让webstorm对选择的node_modules dist 目录进行语法检查了。…...

win10打开计算机加载很慢,Win10系统打开“此电脑”很慢总是在加载不显示怎么办...
刚刚使用windows10系统时,我们难免会碰到大大小小的问题。比如,有用户在Win10系统中打开“此电脑”时发现速度超慢且总是在加载不显示。这该怎么办呢?下面,小编就向大家分享两种解决Win10系统打开“此电脑”很慢总是加载不显示问题…...

Git之深入解析如何贮藏工作分支与清理工作目录
一、前言 了解了管理或者维护 Git 仓库、实现代码控制所需的大多数日常命令和工作流程,尝试跟了踪和提交文件的基本操作,并且掌握了暂存区和轻量级地分支及合并的威力。如果想进一步对 Git 深入学习,可以学习一些 Git 更加强大的功能&#x…...

git:暂存区、工作区、储藏区
稍后更新...

git/Sourcetree 意外 ! 删除贮藏 回复的方法
前言 : 因为我当时不小心删除了贮藏的文件导致修改的内容全无了,然后找了好多方法来是,庆幸的事找回来 (谢天谢地!!!) 话不多说记录一下 使用git fsck --unreachable git fsck --unreachable 用它去查找一下你删除的文件 !大概是折磨一个样子的 然后通过 git show <文件i…...

本地分支与线上代码发生冲突,导致不能应用最新储藏问题
使用git开分支是很多工作人员再工作中会遇到的问题。 今天就遇到了 储藏的分支与线上代码发生冲突,导致拉取代码后,最新储藏不可应用的问题 直接上图
git stash drop恢复贮藏
git fsck --lost-found 生成丢失文件记录,或者执行git fsck --unreachable; 需要通过执行命令 git show XXX 提交id来搜索每一个对象; 注意:输入commit的id,不是blob或者tree,如果记录特别多可以通过时间快速定位&…...

sourceTree对git的新建项目、储藏代码、切换分支、回滚代码、提交代码
sourceTree是一个简单的图形化git管理工具 一、新建一个项目 二、储藏代码 三、切换分支 在切换分支之前,可以对当前分支进行储藏,若是想切回原来的分支直接右键储藏的分支选择应用储藏区即可,工作环境也会恢复到之前的工作环境十分方便 四…...

git stach储藏功能(SourceTree 使用方法,Visual studio 2019 中使用
git stach储藏功能(SourceTree 使用方法,Visual studio 2019 中使用) 贮藏,也是储藏,其实,就是把你没有工作完的内容存储起来,然后开始做目前紧急的事情。等紧急的事情做完了,然后再…...

SoueceTree 本地仓库和贮藏两种方式冲突解决
第一种方式: commit后再pull冲突解决 1、选中冲突文件右键->解决方案->使用 我的版本 解决冲突,这是冲突文件的内容是我最初本地文件内容。这时先commit再push一下即可。 2、选中冲突文件右键->解决方案->使用 他人版本 解决冲突࿰…...

Git巧用贮藏避免解决冲突时的合并记录
背景 使用git进行协同开发的时候,本地的改动很经常会和同事提交的代码产生冲突,需要先在本地将改动提交后才能拉取同事的代码,而后在本地解决冲突。这种做法虽然解决了冲突问题,但是会产生自己的提交和他人的提交合并的记录&…...

SourcesTree使用手册3:文件贮藏与删除
前文:https://blog.csdn.net/Jaihk662/article/details/89183880(文件更新) 假设你很久以前写了一个很重要的脚本xxx.cs并且已经提交,而现在你想优化一下其中一部分代码,并且准备优化(修改)完毕…...

java总结--线程
什么是线程、什么是进程 进程是程序运行和资源分配的基本单位,一个程序至少有一个进程,一个进程至少有一个线程。进程在执行过程中拥有独立的内存单元,而多个线程共享内存资源,减少切换次数,从而效率更高。 线程是进程…...

计算机网络中---重要相似基础的概念
目录 TCP和UDPhttp和https网段和网关端到端和点到点流量控制和拥塞控制单工、半双工和全双工虚电路服务和数据报服务CSMA / CD和CSMA / CA电路交换、报文、分组交换频分复用、时分、波分、码分复用TCP和UDP 这是传输层为了支持不断增多的应用层协议而提供的两种协议,主要是为…...

神经网络之反向传播算法(自适应学习率调整算法Adadelta)
文章目录自适应学习率调整算法(Adadelta)1、算法原理2、算法实现2.1 训练过程2.2 测试过程及结果3、参考源码及数据集自适应学习率调整算法(Adadelta) 自适应学习率调整算法(Adadelta)可以视作是自适应梯度…...

使用TensorFlow Serving进行模型的部署和客户端推理
目的:在一个server端使用TensorFlow框架对模型进行训练和保存模型文件后用TensorFlow Serving进行部署,使得能在客户端上传输入数据后得到server端返回的结果,实现远程调用的效果。环境:操作系统: ubuntu 20.04.1当然可…...

Android异步消息机制
一、异步消息处理机制Handler Android中的异步消息处理主要由4个部分组成:Message、Handler、MessageQueue和Looper。 Message Message是在线程之间传递的消息,它可以在内部携带少量的信息,用于在不同线程之间传递数据。如Message的what字段…...

【id:10】【20分】B. 三串合一(指针与字符数组)
题目描述 输入三个字符串,通过指针读取各个字符串的子串(子串是指字符串中连续的一小部分),把它们合并成一个新字符串 要求: 1. 三个字符串的创建和输入可以使用数组,也可以不用 2. 输入后,根…...

GoJS 2.3 Crack
GoJS 2.3 新的 SVG 渲染上下文 GoJS 通常将图渲染到 HTML 画布,并提供将图场景导出到 图像格式和 SVG。在 GoJS 2.3 中,该库现在支持在 添加到默认画布上下文中。视觉上应该没有变化,性能会 使用默认画布上下文时速度更快,但 SVG…...

数据结构 -- 线性表:定长顺序表和不定长顺序表的代码和实现
一、顺序表 概念: 是一种线性结构(1对1的关系),每一个数据元素都有一个前驱(除了第一个元素)和一个后继(除了最后一个元素) 在逻辑上数据元素都是连续的,在物理存储上数…...

面试了8家软件公司测试岗位,面试题大盘点,我真的尽力了
包含的模块:本文分为十九个模块,分别是:软件测试 基础、liunx、MySQL、web测试、接口测试、APP测试 、管理工具、Python、性能测试、selenium、lordrunner、计算机网络、组成原理、数据结构与算法、逻辑题、人力资源需要的可以看文末获取方式…...

JavaScript专题之惰性函数
参考原文:JavaScript专题之惰性函数 需求 我们现在需要写一个 foo 函数,这个函数返回首次调用时的 Date 对象,注意是首次。 解决一:普通方法 var t; function foo() {if (t) return t;t new Date()return t; }问题有两个&…...

Android本地关键代码安全处理
一、背景 最近在做代码安全方面的工作,发现一些关键信息如:密钥、加密策略等直接写死在项目代码中,存在代码安全隐患。本文档提供一种示例:把关键信息,保存在native层;并对安装包关联信息进行校验…...

Phoenix简介_安装部署_以及连接使用---大数据之Hbase工作笔记0035
我们之前都是用hbase的api的jar包来执行操作的hbase,但是不方便因为语法,太复杂了,提供的api也很麻烦,操作很不友好,Phoenix是凤凰的意思,可以让操作像mysql一样简单,写就可以了 可以看到Phoenix的介绍 上面是官网可以看下 然后看一下如何安装,可以看...

2020-复习
2020-复习一、程序设计二、操作系统三、计算机网络一、程序设计 1.编写一个函数实现十进制向二进制转换的功能,函数的输入为一个十进制数,输出为一个二进制数,如输入37,输出为100101 #include <stdio.h> // 编写一个函数实现十进制向二进制转换的功能,函数的输入为一个…...

Vue2项目总结-电商后台管理系统
Vue2项目总结-电商后台管理系统 去年做的项目,拖了很久,总算是打起精力去做这个项目的总结,并对Vue2的相关知识进行回顾与复习 各个功能模块如果有过多重复冗杂的部分,将会抽取部分值得记录复习的地方进行记录 一:项目…...

M1/M2 Pro VMware Fusion虚拟机安装Win11教程(超详细)
前言 最近换了新电脑 —— M2 Pro,属于是结束了二十多年的Windows生涯了。但是有些东西又必须在Windows系统上去搞。 比如 易语言开发、运行一些exe的软件等等,没办法,搞个虚拟机,装个Win11吧。 下面进入正题: 一、安装…...

记一次Excel模板导出功能
前言 这篇文章是要记载在开发过程中实现:使用自己定义的excel模板文件,将list数据填入模板文件中。 说明 这里只记录了一些功能要点和使用时要注意的地方!!! 详细 引入依赖 这里使用的是easypoi来实现这个功能,先引入依赖包,版本是4.1.2<dependency><group…...

Internet基础
目录Internet1、MAC地址2、IP地址(1)IP地址定义(2)IP地址分类(3)IP地址组成(4)IP地址的计算①子网数,主机数的计算②网络地址和广播地址的计算3、DNS和URL(1&…...

day11-函数总结
Function Effect 在实现某个功能对应的代码的时候,如果将实现功能对应的函数放到函数中,那么下一次再需要这个功能的时候,就可以不用再写这个功能对应的代码了,而是直接调用这个功能对应的函数 def sum_range(num):sum1 0for x…...

python中dumps、dump、load、loads的区别
根据序列化和反序列的特性 loads: 是将string转换为dictdumps: 是将dict转换为stringload: 是将里json格式字符串转化为dict,读取文件dump: 是将dict类型转换为json格式字符串,存入文件 一、相同点 dump…...

CSS基础之盒模型
盒模型 简介 在CSS中,元素都是被一个个的盒子(box)包围着,理解这些盒子的基本原理,是我们使用CSS实现准确布局,处理元素排列的关键。在CSS中有 块级盒子、内联盒子 两种,它们在页面流和元素…...

2023系统分析师---项目管理
一、项目管理 一、基本概念 范围管理:确定项目的边界,即那些工作是项目应该做的,那些工作不应该包括在项目中范围定义的输入包括:项目章程、项目范围管理计划、批准的变更申请、组织过程资产WBS的作用包括:便于估算、…...

go-zero学习 — 基础
go-zero学习 — 基础1 参考2 goctl 相关命令整理2.1 .api生成swagger的命令2.2 .api生成api模块的命令2.3 .proto生成rpc模块的命令2.4 sql文件生成model的命令2.5 docker启动swagger的命令3 架构图4 go-zero环境搭建4.1 注意事项4.2 go-zero 需要安装的组件4.3 方式 14.4 方式…...

【算法】退火算法+背包问题 python
目录一、概念二、算法的优点三、基本流程和公式四、例题python代码已知背包的装载量为 c10,现有 n5 个物品,它们的重量和价值分别是 (2, 3, 5, 1, 4) 和 (2, 5, 8, 3, 6)。试使用模拟退火算法求解该背包问题。python 代码一、概念 模拟退火算法采用类似…...

算法高频函数
目录 fixed() setprecision() setw() swap() sort() subsrt() atoi() 将不定时更新 fixed() 消除浮点数的科学计数法 只要出现了fixed,则后面都是以fixed输出。 用定点表示法表示浮点…...

PCIE时钟解说
接上篇文章《clock oscillator,generator,buffer选型杂谈》,今天我们来说下PCIE时钟的要求: 首先先看下PCIE架构组件:下图中主要包括了CPU(ROOT COMPLEX),PCIE SWITCH,BUFFER以及一些PCIE ENDP…...

从0开始学python -64
Python urllib -1 Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。 本文主要介绍 Python3 的 urllib。 urllib 包 包含以下几个模块: urllib.request - 打开和读取 URL。urllib.error - 包含 urllib.request 抛出的异常。urllib.par…...

[前端笔记036]vue2之ajax配置
前言 本笔记参考视频,尚硅谷:BV1Zy4y1K7SH p96 - p104 vue脚手架配置代理服务器: 方法一:在vue.config.js中添加如下配置: devServer:{proxy:"http://localhost:5000" }优点:配置简单,请求资…...

Activity学习——安卓第二次作业
作业要求: 在第一个Activity通过两个EditText分别输入学号和姓名,然后通过数据传递,在第二个Activity上显示出刚才输入的学号和姓名。 布局要求用约束布局实现。 Activity的启动和结束 从当前页面跳到新页面,跳转代码如下&…...

python正则化
一、re模块简介聊到Python正则表达式的支持,首先肯定会想到re库,这是一个Python处理文本的标准库。标准库的意思表示这是一个Python内置模块,不需要额外下载,目前Python内置模块大概有300个。可以在这里查看Python所有的内置模块&…...

week13周报
一.动态规划走楼梯2难点:不能连续走三次两级台阶如何表示思路:可以用二维数组f[i][j],i表示当前台阶数,j表示已经连续走了j次二级台阶了转移方程:f[i2][j1]f[i2][j1]f[i][j] 当j!2时,我们可以选择走二级台阶…...

Mybatis使用Oracle数据库主键自增
一、关于mysql和oracle主键自增 我们知道在mysql中主键设置为int类型,然后设置AUTO_INCREMENT,则在插入数据的时候mapper中的sql文件是可以不写主键这个字段,数据库就会自动补全一个自增的主键值,但是在oracle中没有AUTO_…...

音视频技术开发周刊 | 285
每周一期,纵览音视频技术领域的干货。新闻投稿:contributelivevideostack.com。GPT-4 Office全家桶发布谷歌前脚刚宣布AI工具整合进Workspace,微软后脚就急匆匆召开了发布会,人狠话不多地祭出了办公软件王炸——Microsoft 365 Cop…...

具备人脸识别功能的多目标在线实时行为检测(yolov5+deepsort+slowfast)
文章目录前言配置项人脸识别配置多目标行为检测配置人脸识别模块采集模块人脸存储模块识别模块目标行为检测模块非在线实时检测在线实时检测结合人脸识别总结前言 这里先声明一下本项目是基于https://github.com/wufan-tb/yolo_slowfast 做的一个二次开发,也就是进…...

你绝对不知道的 SpringBoot 的外部化配置特性!
作为 Java 程序员,相信大家都知道,我们日常的 SpringBoot 项目会有一个配置文件 application.properties 文件。 里面会配置很多参数,例如服务的端口等,这些都只是默认值,在不改变配置文件里面内容的情况下,…...

《2023大型企业财务数智化白皮书》:大型企业财务数智化建设应用架构
2023年3月16日,用友在北京国家会计学院举办“智能会计价值财务”2023企业数智化财务创新峰会 北京站。会上,用友《大型企业财务数智化白皮书》重磅发布,其核心观点之一中强调,大型企业财务数智化建设应遵循“1-1-7”体系ÿ…...

JAVA进阶 —— 动态代理
目录 一、什么是动态代理? 二、如何为Java对象创建代理对象? 三、两种常见的动态代理方式 1. 基于接口的动态代理 2. 基于类的动态代理 一、什么是动态代理? 在原有代码上加入新的功能该如何操作呢? 我们可以采用 侵入式修改…...

TCP报文和UDP报文
TCP报文 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,用于在网络中传输数据。TCP报文段是TCP协议的基本单位,它主要由以下字段组成:20个字节 源端口号(16 bits)和目…...

【ChatGPT】教你搭建多任务模型
ChatGPT教你搭建多任务模型 You: tell me what’s your version of gpt ? ChatGPT: As an AI language model developed by OpenAI, I am based on the GPT (Generative Pretrained Transformer) architecture. However, my version is known as GPT-3.5, which is an updat…...

【微信小程序】-- 案例 - 自定义 tabBar(四十六)
💌 所属专栏:【微信小程序开发教程】 😀 作 者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

人工智能多模态方向学习笔记Attention and Tell
简介 Attention and Tell(通常缩写为“Attn-Tell”)是一种机器学习算法,用于自然语言处理任务,如文本摘要和问答。 该算法由两个主要组件组成:注意力机制和解码器。注意力机制用于识别输入序列的重要部分,…...

ESP8266-NodeMCU开发板-------开发板介绍(1)
目录 认识ESP8266-NodeMCU开发板编辑 GPIO编号与NodeMCU开发板引脚名的区别: ESP8266 GPIO编号与NodeMCU开发板引脚名的对应关系 可用引脚 电压电流限制 特殊引脚情况说明 上拉电阻/下拉电阻 模拟输入 通讯 认识ESP8266-NodeMCU开发板 初识NodeMCU开发板 (第1章-第…...

蓝桥杯算法全集之完全背包问题(动态规划算法)
一、概念定义有 N 种物品和一个容量是 V 的背包,每种物品都有无限件可用。第 i种物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。用下面这个图来分别动态规…...

Servlet:利用Response实现重定向及其与请求转发的区别与实例展示
目录 一、创建RedirectServlet类 二、注册Srevlet(在web.xml中) 三、重定向和请求转发的区别 四、重定向实例应用——登录界面 1、打开index.jsp设计登录页面 2、创建RequestTest类 3、注册servlet 4、在webapp文件夹下新建一个success.jsp文件 …...

leetcode 2111 使数组K递增的最少操作次数
给你一个下标从 0 开始包含 n 个正整数的数组 arr ,和一个正整数 k 。 如果对于每个满足 k < i < n-1 的下标 i ,都有 arr[i-k] < arr[i] ,那么我们称 arr 是 K 递增 的。 比方说,arr [4, 1, 5, 2, 6, 2] 对于 k 2 是…...

(数字图像处理MATLAB+Python)第一章:绪论
文章目录一:图像的基本概念(1)视觉与图像A:视觉B:图像(2)图像的表示A:函数表示B:模拟图像C:数字图像二:数字图像处理(1)数…...

【3.20】BFS算法、操作系统进程管理(整理)、Java并发面试题
BFS BFS出现的常见场景是:让你在一幅「图」中找到从起点 start 到终点 target 的最近距离,这个例子听起来很枯燥,但是 BFS 算法问题其实都是在干这个事儿。 BFS框架: // 计算从起点 start 到终点 target 的最近距离 int BFS(No…...

【服务器数据恢复】使用碎片拼接方法恢复SQL Server数据库的数据恢复案例
服务器数据恢复环境: 某公司一台DELL服务器,作为WEB服务器使用,安装的Windows Server操作系统,配置了SQL Server数据库; 采用了Xen Server虚拟化系统; 底层是通过raid卡,用4块STAT硬盘搭建的RAI…...

VBA提高篇_ 31 VBA调用正则表达式_RegExp.Pattern/Global/Execute(s)/Replace(s,r)
文章目录1.VBScript处理正则的对象:2.创建对象: CreateObject("")3. 查找步骤RegExp.Pattern/Global/Execute(s)3.1 RegExp.Pattern--> 设置正则3.2 RegExp.Global--> 设置全局查找3.3 RegExp.Execute(s)--> 执行查找4.查找结果4.1 Matchs4.2 ()分组的高级应…...

基于BP神经网络的图像跟踪,基于BP神经网络的细胞追踪识别
目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络激活函数及公式 基于BP神经网络的细胞识别追踪 matab编程代码 效果 结果分析 展望 摘要 智能驾驶,智能出行是现代社会发展的趋势之一,其中,客量预测对智能出行至关重要,…...

day11-Python-函数
Python-函数 一.函数作用 """ 在实现某个功能对应的代码的时候,如果将实现功能对应的函数放到函数中,那么下一次再需要这个功能的时候,就可以不用再写这个功能对应的代码了, 而是直接调用这个功能对应的函数 &qu…...

总线(六)SPI通信协议介绍
文章目录SPI背景知识SPI特征SPI总线的物理层SPI标准协议SPI背景知识 SPI(Serial Peripheral interface)是串行外设接口,是一种高速、全双工、同步的通信总线。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI特征 1、全双工串行通信&a…...

国产化替代浪潮下,企业该如何保障电子邮件安全?
电子邮件,是日常工作到会经常用到的联系方式。但也正因为此,邮件攻击也成了网络攻击的主要手段之一,特别是带有恶意病毒、网页木马程序、特制木马程序以及利用软件漏洞的邮件木马在互联网上泛滥成灾,邮件安全已经成为一个安全领域…...

ChatGPT能够改变时代吗?一点点思考
都知道ChatGPT的出现对整个世界产生了剧烈的影响,前不久出的ChatGPT4更是在ChatGPT3.5的基础上展现了更强的功能。比如说同一个问题,ChatGPT3.5还是乱答的,ChatGPT4已经能给出正确解了。当然这只能说明技术是进步的。 虽然如此,很…...

十四届蓝桥杯青少组选拔赛Python_2023.03.12
十四届蓝桥杯青少组选拔赛Python_2023.03.12 未完 待更新...... T4. 编程实现: 假设果园中有N(1<=N<=100)种水果,猴子想要采摘一些水果带回家,但猴子采摘水果的总重量不能超过W(1<=W<=1000). 已知每种水果的最大采摘数量Ni(1<=Ni<=100)、每种水…...

桌面出现白色图标的恢复办法
前几天装了一个软件,在桌面生成了快捷方式,用着用着这个图标突然变成了白色的,如下图所示。 这对有强迫症的人来说是难以接受的,所以就在网上找了很多解决办法,本来觉得重启电脑会解决,但是也没能够&#…...

1052 Linked List Sorting PAT甲级真题
A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now given a linked list, you are supposed to sort the structure...

RK3588平台开发系列讲解(NPU篇)NPU调试方法
平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、日志等级二、NPU 支持查询设置项沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们一起来看一下NPU的调试方法。 一、日志等级 NPU 的运行库会根据开发板上的系统环境变量输出一些日志信息或者生成…...

SpringMVC框架详解(学习总结)
目录 什么是MVC SpringMVC概述 SpringMVC常见开发方式 SpringMVC执行流程 SpringMVC核心组件介绍 快速构建Spring MVC程序 SpringMVC参数绑定 SpringMVC跳转方式 SpringMVC处理json请求和响应 SpringMVC静态资源处理 SpringMVC操作session和cookie SpringMVC拦截器 …...

Java 基于 JAVE 库 实现 视频转音频的批量转换
文章目录 Java 基于 JAVE 库 实现 视频转音频的批量转换Maven:方案一:代码优化:方案二:示例代码:代码优化:结语Java 基于 JAVE 库 实现 视频转音频的批量转换 实现视频转音频的功能需要使用到一个第三方的 Java 库,叫做 JAVE。JAVE 是一个开源的 Java 库,提供了视频和音频转换…...

为何在 node 项目中使用固定版本号,而不使用 ~、^?
以语雀 文档为准 使用 ~、^ 时吃过亏希望版本号掌握在自己手里,作者自己升级(跟随官方进行升级,就算麻烦作者,也不想麻烦使用者)虽然 pnpm 很好用,但是不希望在项目中用到(临时性解决问题可以选…...