数据结构------树 能不能帮忙解答下

有一份电文中共使用 6个字符:a,b,c,d,e,f,它们的出现频率依次为: 0.2,0.17,0.14,0.12,0.18,0.19,回答下面的问题:
(1) 试构造一棵哈夫曼树(小值左子树,大值右子树)
(2) 给出各个字符的编码(按照左0右1编码)
(3) 求其加权路径长度WPL

1个回答

这个题目你只需要知道哈夫曼树就可以了
首先将字符与加权一一对应,并将他们按权值大小排序:
d 0.12 c 0.14 b 0.17 e 0.18 f 0.19 a 0.2
哈夫曼树构造方法:
假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:
(1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);
(2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;
(3)从森林中删除选取的两棵树,并将新树加入森林;
(4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所求得的哈夫曼树。
----来源百度百科
(1)先挑选最小的两个节点,此处为dc,作为一棵树的左右叶子,用他们的和作为根节点,就够造成了一棵树。
(2)以新产生的树为左子树,在未加入树中的节点在选择一个最小权值的节点,作为右叶子,构造一棵树。
(3)重复(2),直至结束。
然后根据左零右一得规则进行编码,即任意一个根节点,指向左孩子的树枝(姑且叫树枝)标注零,同理指向右孩子的标注一。如图

图片说明

确定编码:从根节点出发,到指定节点N所走过路径上的编码顺排,就构成了这个节点的编码,如a可以编码1指代。
每个节点的编码图片中已经给出。
求加权路径长度:题目中给出了每个节点的权值,可记为Wi(第i个节点的权重)你需要搞清楚普通路径长度是多少,根据够早的哈弗曼数,每一个节点到根节点的所要经过的边数称为路径长度,此处记为Li(第i个节点的...)
加权路径长度即为全部节点LiWi的西格玛求和
本题目构造的哈夫曼树WPL为
0.2×1+0.19×2+0.18×3+0.17×4+0.14×5+0.12×5

学过好久了,可能有纰漏,海涵。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java解析字符串,按照树形结构存入数据库--这个问题纠结了我好久,各路大神求帮忙
[color=red][b][size=large]字符串:[/size][/b][/color] LDAP://gz.cvte.cn/CN=张三,OU=研发中心,OU=事业部,OU=AAA有限公司,OU=C集团 LDAP://gz.cvte.cn/CN=tom,OU=销售部,OU=事业部,OU=AAA有限公司,OU=C集团 ...... [color=red] [b][size=large]表结构:(可以修改,反正能体现到树状结构就好了)[/size][/b][/color] id name:名称 fatherId: 父Id type:类型(人员,公司,部门) [size=large][color=red]问题:解析上述字符串,然后按照下列树状形式存入数据库,数据库不限。 PS:【上述字符串中 人员的名字, 集团的名字, xxx有限公司的名字都是唯一的】 [/color][/size] [code="java"] C集团 (公司) |-AA有限公司 (公司) | |-电源事业部门 (部门) | |-研发中心 (部门) | |-张三 (人员) | |-BBB公司 (公司) |-研发中心 (部门) |-李四 (人员)[/code] 请求大神解答,我弄了两天都没弄出来。。哎哎呀呀呀呀呀。。
求各位大神解答c++的一道题,希望帮忙改改,谢谢指教
设计一个程序,按表格形式输出实际生活中的多行数据信息,要求同一列数据上下对齐。 例如:有以下省市的面积和人口信息,请定义结构体类型City,包括省名、面积、人口,输入以下的数据值,再按表格形式输出所有数据。 ------------------------------------ Province Area(km2) Pop.(10K) ------------------------------------ Anhui 139600.00 6461.00 Beijing 16410.54 1180.70 Chongqing 82400.00 3144.23 Shanghai 6340.50 1360.26 Zhejiang 101800.00 4894.00 ------------------------------------ #include<iostream> using namespace std; #include<iomanip> struct City { char province[20]; double area; double pop; }; void display(struct City *); int main() { struct City city[5]={ {"Anhui",139600.00,6461.00}, {"Beijing",16410.54,1180.70}, {"Chongqing",82400.00,3144.23}, {"Shanghai",6340.50,1360.26}, {"Zhejiang",101800.00,4894.00} }; display(&city); return 0; } void display(struct City *C) { cout<<"------------------------------------"<<endl; cout<<"Province Area(km2) Pop.(10K)"<<endl; cout<<"------------------------------------"<<endl; for(int i=0;i<=4;i++) { cout<<left<<setw(14)<<C->province; cout<<right<<setw(9)<<C->area; cout<<" "<<C->pop; *C++; i++; } }
数据结构与树相关问题,求助大佬帮忙解答一下
1、已知一颗二叉树的后序遍历为dhebfigca,中序序列为dbehafcig,该二叉树根的左子树的根是多少? 2、由权为10,3,6,8四个叶子结点构成的一颗哈夫曼树的带权路径长度是多少? 3、对序列{16,12,7,8,22,-2,5}使用希尔排序方法排序,经一趟后序列变为{16,-2,5,8,22,12,7},则该次采用的增量是多少?
数据结构题,求大神帮忙解答,多谢
![图片说明](https://img-ask.csdn.net/upload/201905/02/1556793286_74826.png) 题目见附件,请大神,帮忙解答下,多谢 这个是我画的,到底对不对啊,能帮忙看看不: ![图片说明](https://img-ask.csdn.net/upload/201905/03/1556846670_545565.png)
数据结构用树结构设计家谱
家庭成员的管理问题 (2-3人) 1、问题描述: 例如有这样的一对老夫妻(A、B),他们生有n男m女,其中,某个儿子(D)娶妻(C)生有x男y女,某个女儿(E)嫁夫(F)生有i男j女,其余的子女有可能婚嫁,也有可能单身,已婚的可能生有孩子若干,其孩子相继婚嫁…… 2、基本要求: 数据对象是以上所有的家庭成员,要求建立他们之间的夫妻、子女等关系并方便查询。 [测试数据] 按时间顺序建立家庭关系; 按姓名查询某个家庭成员及其配偶和孩子。 用多叉树和兄弟链表设计,不要用二叉树,求大神帮忙解答,真的很急!!我感激不尽!
数据结构的题目帮忙看下~~~
#include <stdio.h> #include <stdlib.h> typedef struct node { int data; struct node *next; }linklist; void creatlist(linklist *L,int n ) { L->next=NULL; linklist *p; int i=0,ch; printf("按大小顺序输入%d个数:\n",n); while(i<n) { scanf("%d\n",&ch); p=(linklist *)malloc(sizeof(linklist)); p->data=ch; p->next=NULL; L->next=p; L=L->next; i++; } L->next=NULL; } void insert(linklist *L) { int e; printf("输入要插入的数:\n"); scanf("%d\n",&e); linklist *p=L->next,*pre=L,*s; s=(linklist *)malloc(sizeof(linklist)); s->data=e; while (p&&p->data<=e) { pre=p; p=p->next; } pre->next=s; s->next=p; } void printlink(linklist *L) { while(L->next) { printf("%d\n",L->next->data); L=L->next; } } void main() { linklist *h=(linklist *)malloc(sizeof(linklist)); creatlist(h,5); printf("输出链表:\n"); printlink(h); insert(h); printf("输出插入后的链表:\n"); printlink(h); getch(); } 为什么每次结束要用^z才能结束 还有怎样变成回车结束,新手求解答~~~~
请求解答一条SQL查询的结果-sybase
在测试中,发现执行一条SQL返回的结果不对,具体如下,请各位帮忙解答我的困惑 :? 用的数据库是ASE Enterprise Edition 12.5.4 for Windows: 表结构: [code="sql"] CREATE TABLE dbo.AlarmFilter ( fdiId numeric(10,0) IDENTITY, fdiTaskId numeric(10,0) NOT NULL, fdiGroupId numeric(10,0) NOT NULL, fdiActive int DEFAULT 1 NOT NULL, CONSTRAINT PK_AlarmFilter PRIMARY KEY NONCLUSTERED (fdiId) ) LOCK DATAROWS WITH EXP_ROW_SIZE=1, IDENTITY_GAP=1 go [/code] 数据: [code="java"] fdiId fdiTaskId fdiGroupId fdiActive 25 15000977 1 1 26 15000978 1 1 27 15000980 1 1 28 15000979 1 1 29 15000977 1 1 30 15000978 1 1 31 15000979 1 1 32 15000980 1 1 33 15000981 1 1 10 15000977 2 1 11 15000978 2 1 12 15000979 2 1 13 15000980 2 1 14 15000981 2 1 15 15000982 2 1 16 15000987 2 1 17 15000988 2 1 18 15000994 2 1 19 15000995 2 1 20 15000996 2 1 21 15000998 2 1 22 15001000 2 1 23 15000992 2 1 24 15000993 2 1 34 15000982 1 1 35 15000985 1 1 36 15000987 1 1 37 15000988 1 1 38 15000992 1 1 39 15000993 1 1 40 15000994 1 1 41 15000995 1 1 42 15000996 1 1 43 15000998 1 1 44 15001000 1 1 45 15001003 1 1 46 15001021 1 1 47 15000977 3 1 48 15001038 3 1 49 15001038 4 1 50 15001040 4 1 51 15001041 4 1 52 15001042 4 1 53 15001044 4 1 54 15001045 4 1 55 15001046 4 1 56 15001034 4 1 57 15001035 4 1 58 15001036 4 1 59 15001053 2 1 60 15001076 2 1 61 15001049 4 1 62 15001050 4 1 63 15001051 4 1 64 15001053 4 1 65 15001054 4 1 66 15001055 4 1 67 15001056 4 1 68 15001057 4 1 69 15001060 4 1 70 15001069 4 1 71 15001070 4 1 72 15001071 4 1 73 15001072 4 1 74 15001076 4 1 75 15001077 4 1 76 15001080 4 1 77 15001081 4 1 78 15001082 4 1 79 15001083 4 1 80 15001084 4 1 81 15001085 4 1 82 15001086 4 1 83 15001087 4 1 84 15001088 4 1 85 15001089 4 1 86 15001090 4 1 87 15001091 4 1 88 15001092 4 1 89 15001093 4 1 90 15001094 4 1 91 15001096 4 1 92 15001097 4 1 93 15001098 4 1 94 15001102 4 1 95 15001103 4 1 96 15001095 4 1 97 15001099 4 1 98 15001100 4 1 99 15001104 4 1 100 15001105 4 1 101 15001106 4 1 102 15001107 4 1 103 15001108 4 1 104 15001109 4 1 105 15001110 4 1 106 15001111 4 1 107 15001112 4 1 108 15001113 4 1 109 15001114 4 1 110 15001115 4 1 111 15001116 4 1 112 15001117 4 1 113 15001118 4 1 114 15001119 4 1 115 15001120 4 1 116 15001121 4 1 117 15001122 4 1 118 15001123 4 1 119 15001124 4 1 120 15001125 4 1 121 15001126 4 1 122 15001127 4 1 123 15001128 4 1 124 15001129 4 1 125 15001130 4 1 126 15001131 4 1 127 15001132 4 1 128 15001150 4 1 129 15001133 4 1 130 15001134 4 1 131 15001135 4 1 132 15001136 4 1 133 15001151 4 1 134 15001152 4 1 135 15001153 4 1 136 15001154 4 1 137 15001155 4 1 138 15001137 4 1 139 15001156 4 1 140 15001157 4 1 141 15001158 4 1 142 15001159 4 1 143 15001160 4 1 144 15001161 4 1 145 15001162 4 1 146 15001163 4 1 147 15001138 4 1 148 15001139 4 1 149 15001164 4 1 150 15001165 4 1 151 15001166 4 1 152 15001167 4 1 153 15001168 4 1 154 15001169 4 1 155 15001170 4 1 156 15001140 4 1 157 15001179 4 1 158 15001180 4 1 159 15001181 4 1 160 15001182 4 1 161 15001141 4 1 162 15001142 4 1 163 15001143 4 1 164 15001144 4 1 165 15001145 4 1 166 15001146 4 1 167 15001147 4 1 168 15001148 4 1 169 15001149 4 1 170 15001171 4 1 171 15001172 4 1 172 15001173 4 1 173 15001174 4 1 174 15001175 4 1 175 15001176 4 1 176 15001177 4 1 177 15001178 4 1 [/code] 执行的SQL: [code="sql"] select max(fdiId) from ( SELECT top 3 * from ( SELECT T.fdiId, T.fdiTaskId, T.fdiGroupId, T.fdiActive FROM dbo.AlarmFilter T ) tbl_1 ) tbl_2 [/code] 执行结果: [code="java"]177[/code] [color=red]我的问题是:查询期望是返回27的,但事实上查询返回的是177。[/color] 我是这样分析的: 子查询[code="sql"] SELECT top 3 * from ( SELECT T.fdiId, T.fdiTaskId, T.fdiGroupId, T.fdiActive FROM dbo.AlarmFilter T ) tbl_1 [/code] 返回的结果是 [code="java"] fdiId fdiTaskId fdiGroupId fdiActive 25 15000977 1 1 26 15000978 1 1 27 15000980 1 1 [/code] 然后我在外面加一层select max(fdiId) 应该是返回最大的fdiId 27,但事实上返回的却是177(整个表最大的fdiId), 我把上面的子查询建一个视图,然后select max(fdiId) from testview,返回的还是177, 我把max改为min,返回的是10(整个表最小的fdiId) 唉,我想不明白。。。哪位帮我解答一下,难道Sybase有不支持这样的查询? [b]问题补充:[/b] [quote]Sql代码 1. SELECT top 3 * from ( 2. SELECT T.fdiId, 3. T.fdiTaskId, 4. T.fdiGroupId, 5. T.fdiActive 6. FROM dbo.AlarmFilter T 7. ) tbl_1 SELECT top 3 * from ( SELECT T.fdiId, T.fdiTaskId, T.fdiGroupId, T.fdiActive FROM dbo.AlarmFilter T ) tbl_1 返回的结果不确定把,你必须排序了才能是你期望的。[/quote] 查询返回的结果没变啊,因为子查询返回的数据定了,外加Select应该是定的吧? 还有一点就是子查询不能用order by,所以。。 [b]问题补充:[/b] [quote]select max(tbl_2.fdiId) from ( SELECT top 3 * from ( SELECT T.fdiId, T.fdiTaskId, T.fdiGroupId, T.fdiActive FROM dbo.AlarmFilter T ) tbl_1 ) tbl_2 [/quote] 这个查询返回的结果不变还是177。 ----------------------------------------- [quote] 没有用过 sybase 怀疑是这里有问题 Sql代码 1. top 3 * [/quote] 可能真是这个top 3 * 在子查询中不起作用的原因,但它不报错啊,晕啊。。 ---------------------------------------- [quote] 你完全可以不用子查询啊,不知道sybase里面有没有类似oracle里面rownum的东西,这里不排序肯定是不行的啊,还有就是这里的top 3不能放在子查询里面?[/quote] sybase中没有这样的东西,现在觉得sybase真差。 [b]问题补充:[/b] [color=red]刚刚在MS SQLServer2005 上测试了一下,结果和Sybase一样,那应该不是Sybase的问题,这个SQL语法没错啊,哪位知道是怎么解析执行的吗?[/color]
求各位大神帮忙解答下这个问题,快期末考试了,数据结构好难啊!!!
1. 有如下递归过程,调用print(4)的结果是? void print(int w) { int i; if(w != 1) { print(w - 1); for(i = 0; i <= w; i++) printf("%3d",w); printf("\n"); } }
sql语句出错,求大神帮忙解答
CREATE PROCEDURE test() BEGIN DECLARE fid int; DECLARE days int DEFAULT 1; DECLARE s int default 0; DECLARE company_code VARCHAR; DECLARE cursor_company CURSOR FOR SELECT company FROM test WHERE status = 3; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET a=1; OPEN cursor_company; FETCH cursor_company INTO company_code; WHILE a<>1 DO IF company_code = 'DD' THEN SET days = 2; END IF; ELSEIF company_code ='ZD' THEN SET days = 5; END ELSEIF; ELSEIF company_code ='GG' THEN SET days = '8'; END ELSEIF; FETCH cursor_company INTO company_code; DECLARE cursor_name CURSOR FOR SELECT id FROM test WHERE UNIX_TIMESTAMP(check_time) < UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -days DAY)); #设置一个终止标记 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1; #打开游标 OPEN cursor_name; #获取游标当前指针的记录,读取一行数据并传给变量stu FETCH cursor_name INTO fid; #开始循环,判断是否游标已经到达了最后作为循环条件 WHILE s <> 1 do UPDATE test SET status = 8 where id=fid; #读取下一行的数据 FETCH cursor_name INTO fid; END WHILE; #关闭游标 CLOSE cursor_name ; #语句执行结束 END WHILE; CLOSE cursor_company; END 表结构 id int check_time datetime status int company varchar 错误信息: [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; DECLARE cursor_company CURSOR FOR SELECT company FROM test WHERE status =' at line 10 看了好久,可是感觉没有错误,不知道毛病出在哪里,求大神解答
用C语言解决数据结构的背包问题
求大神解答…在此谢谢比较急…希望大家能够帮帮忙哇…这是我们的课程设计不怎么会 ![图片说明](https://img-ask.csdn.net/upload/201506/26/1435325726_263981.png)![图片说明](https://img-ask.csdn.net/upload/201506/26/1435325684_322273.png)
wpf 怎样用数据库中的数据直接生成treeview?
数据库表: 表: id name parentId 1 A -1 2 B 1 3 C 1 4 D 2 parentId=-1表示根节点 在treeview中A是根节点,B、D是A的节点,C是B的节点 希望可以直接将数据库中的二维结构表生成treeview,并添加删除节点,在wpf中应该怎样实现呢?试了很久一直没成功,希望各位前辈老师能帮忙解答,谢谢!
做了一个小时的面试题(没有过 希望大家帮忙答下 虽然很幼稚 毕竟每个人都是这么过来的吗 感激了!)
XX软件工程师笔试试题 注:1、请参考人员将答案写在答题纸上,勿将答案写在此卷上。 2、请参考人员将编号与姓名填写在答题纸上。 1、 以下数据结构中不属于线性数据结构的是()。 A、队列 B、线性表 C、二叉树 D、栈 我的答案:C 2、 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是()。 A、 可行性分析 B、需求分析 C、详细设计 D、程序编码 我的答案:B 3、 结构化程序设计主要强调的是()。 A、 程序的规模 B、程序的易读性 C、程序的执行效率 D、程序的可移植性 我的答案:C 4、 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段()。 A、 概要设计 B、详细设计 C、可行性分析 D、需求分析 我的答案:B 5、 下列关于栈的叙述中正确的是()。 A、 在栈中只能插入数据 B、在栈中只能删除数据 B、 栈是先进先出的线性表 D、栈是先进后出的线性表 我的答案:D 6、 下面不属于软件设计原则的是()。 A、 抽象 B、模块化 C、自底向上 D、信息隐蔽 我的答案:C 7、 对长度为N的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。 A、 N+1 B、N C、(N+1)/2 D、N/2 我的答案:C 8、 视图设计一般有3种设计次序,下列不属于视图设计的是()。 A、 自顶向下 B、由外向内 C、由内向外 D、自底向上 我的答案:C 9、下列有关数据库的描述,正确的是()。 A、数据库是一个DBF文件 B、数据库是一个关系 C、数据库是一个结构化的数据集合 D、数据库是一组文件 我的答案:C 10、下列说法中,不属于数据模型所描述的内容的是()。 A、数据结构 B、数据操作 C、数据查询 D、数据约束 我的答案:A 11、若按功能划分,软件测试的方法通常分为白盒测试方法和(黑盒测试方法)。 12、数据库系统的三级模式分别为(级联)模式、内部级模式与外部级模式。 13、在最坏情况下,冒泡排序的时间复杂度为(N+1/2)。 14、在面向对象方法中,信息隐蔽是通过对象的(封装)性来实现的。 15、关系模型的数据操纵既是建立在关系上的数据操纵,一般有(插入)、增加、删除、和修改四种操作。 16、TIME()的返回值的数据类型是(String)类型。 17、编写SQL语句 1)、创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话 我的答案: create table student( studentCardNo number(2) primary key, name char(10), age number(2), sex char(2) check(sex in (‘男’,’女’)), address varchar2(100), tel number(2) ) 2)、修改学生表的结构,添加一列信息,学历 我的答案: alter table student add(xueli varchar2(20)); 3)、修改学生表的结构,删除一列信息,家庭住址 我的答案: alter table student drop column address; 4)、向学生表添加如下信息: 学号 姓名 年龄 性别 联系电话 学历 1 A 22 男 123456 小学 2 B 21 男 119 中学 3 C 23 男 110 高中 4 D 18 女 114 大学 我的答案: insert into student values(‘&1’,’&2’,’&3’); 一次一次添加 5)修改学生表的数据,将电话号码以11开头的学员的学历改为“大专” 我的答案: update student set xueli=”大专” where tel like 11%; 6)删除学生表的数据,姓名以C开头,性别为‘男’的记录删除 我的答案: delete student where name like C% or sex=”男”; 7)查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号显示出来 我的答案: select name,studentCardNo from student where age<22 and xueli=”大专”; 8)查询学生表的数据,查询所有信息,列出前25%的记录 我的答案: select top*0.25 from student; 9)查询出所有学生的姓名,性别,年龄降序排列 我的答案: select name,sex,age from student where age desc; 10)按照性别分组查询所有的平均年龄 我的答案: select avg(age) from student group by sex; 18、什么是存储过程?为什么存储过程要比单纯的SQL语句执行起来要快? 我的答案: 存储过程算是一种优化查询需要比单存SQL语句执行的要快 19、两张关联表,删除主表中已经在副表中没有的信息 我的答案 delete from fubiao a where a.fid not in(select id from zhubiao) 20、程序题: 用1、2、2、3、4、5这六个数字,用java或你熟悉的语言,打印出所有不同的排列,如:512234、412345等,要求:“4”不能再第三位,“3”与“5”不能相连。并将这些数据按从小到大输出。 我的答案 我的写的不好 没贴下 笔试的时候没写全 21、String 和 StringBuffer的区别 我的答案 String定长 StringBuffer 变长 22、&和&&的区别 我的答案 &短路与 &&逻辑与 网上答案: & 是位运算符,表示按位与运算, && 是逻辑运算符,表示逻辑与(and)。 23、final,finally,finalize的区别 我的答案 Final静变量关键字,finally异常关键字,finalize 网上答案 final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。 finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法, 可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 24、数组有没有length()这个方法?String有没有length()这个方法? 我的答案: 数组没有length()这个方法,有length的属性。 String有length()这个方法。 25、是否可以继承String类? 我的答案: 不可以 解释的很乱 26、说出数据连接池的工作机制是什么? 我的答案: 反正解释的很乱我感觉 27、垃圾回收的优点和原理。并考虑2种回收机制。 我的答案: 动态回收 解释的很乱 网上答案: Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解, 它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念, 只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有 使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。 28、你所知道的集合类都有哪些?区别?主要方法? 我的答案: Arraylist 非线性的、Vertor线性的 29、JSP的内置对象及方法。 我的答案: Page,exception,out,page content,application,request,reponse,session,config 30、页面间对象传递的方法。 我的答案: 那几个方法都写错了 31、你知道Request对象的主要方法有哪些? 32、J2EE是技术还是平台还是框架? 我的答案: J2EE是技术也是平台 网上答案: J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。 J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。 33、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种(例如GBK编码类型)编码的字符串? Request encording(“GBK”) 34、j2ee常用的设计模式?说明工厂模式。 Gof23种设计模式 工厂模式:Factory 网上答案: Java中的23种设计模式: Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式), Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式), Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式), Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式), Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式), Observer(观察者模式), State(状态模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(责任链模式) 工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。 首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。 然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。 当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。 35、JSP四种会话跟踪技术 我的答案: Application cookie session 36、排序都有哪几种方法?请举例 冒泡 选择 快序 二分查找 网上答案: 排序的方法有:插入排序(直接插入排序、希尔排序), 交换排序(冒泡排序、快速排序), 选择排序(直接选择排序、堆排序), 归并排序,分配排序(箱排序、基数排序) 快速排序的伪代码。 //使用快速排序方法对a[ 0 :n- 1 ]排序 从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点 把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点 递归地使用快速排序方法对left 进行排序 递归地使用快速排序方法对right 进行排序 所得结果为l e f t + m i d d l e + r i g h t 37、关于模块间的设计原则? 规范要一样 38、项目过程一般是怎样的?你参加过几个项目开发?参加过的项目流程是怎样的?自己负责与人合作工作内容及自我评价? 从需求调研——设计开发——实施 参加过网站的实施 模板的制作 39、tomcat自动关闭常见原因? 我的答案: 现在没遇到过 40、如何设置TOMCAT内存和连接数? 我的答案: Tomcat群集 41、你如何理解Tomcat是什么? 我的答案: Tomcat是JSP Servlet 容器恰当的说 42、静态变量和实例变量的区别? 我的答案: 静态变量域用final修饰,每次都被调用 实例变量则不会 43、IE、FF下面CSS的解释区别 我的答案: 自己编的 44、web前端技术你了解哪些技术? 我的答案: JAVAScript,CSS,DIV,Ajax,Ajax框架,DWR,dojo,jguery 45、什么是报表?什么是报表控件,作用是什么?你了解哪些报表工具? 我的答案: 解释的很乱 46、你了解的那些统计图表类型? 我的答案: 自己编的 47、Flex与数据库连接的三种方式? 我的答案: 自己编的 ------------------------------------------------------- 我答错的、 错在哪里? 没答上的帮忙解答下? 感激了 !
字符串逆置问题,数据结构(C++)
#include<iostream> #include<string> using namespace std; typedef struct chunk { char ch; struct chunk *next; }; typedef struct LString { chunk *head,*tail; int curlen; }; //创建串的函数 string CreateString(LString &S) { cout<<"请输入串:"<<endl; string s1; S.head = new chunk; chunk *tem_chunk; tem_chunk = S.head; tem_chunk->next = new chunk; tem_chunk = tem_chunk->next; getline(cin,s1); for(int i = 0;i < s1.length();i++) { tem_chunk->ch = s1[i] ; tem_chunk->next = new chunk; tem_chunk = tem_chunk->next; } return s1; } //显示串的函数 void ShowString(LString S,string s1) { chunk *tem = S.head; for(int i = 0 ; i < s1.length() ; i++) { tem = tem->next; cout<<tem->ch; } } //匹配函数 int Index(string S,string T){ int i=0,j=0,n,m; n=S.length(); m=T.length(); while(i<n&&j<m){ if(S[i]==T[j]){ i++; j++; } else{ i=i-j+1; j=0; } } if(j==m) { cout<<"匹配成功"<<endl; return i-m+1; } else { cout<<"匹配不成功"<<endl; return 0; } } //逆置函数 void Inverse(LString &S,LString T,int i,int k) //i为逆置起始点,k为子串长度 { chunk *tem1 ,*tem2,*tem; tem1 = S.head ; // for(int j = 0; j < i ;j++) tem1 = tem1->next; // tem2 = tem1->next; for(int j = 0; j< k*k ; j++) { tem = tem2->next ; tem1->next = tem; tem2->next = tem1; tem1 = tem2; tem2 = tem; } } int main() { //完成匹配两个串,并且找到首次匹配的子串并且逆置 LString S,T; string s1,s2; s1 = CreateString(S) ; s2 = CreateString(T); int n = Index(s1,s2); if(n!=0) { Inverse(S,T,n,s2.length()); cout<<"逆置后字符串:"; ShowString(S,s1); } return 0; } 一直抱错,我调试了之后显示就是在逆置函数那个地方出错了 哪位好心的大神帮忙解答一下,字符串逆置我都搞晕了~~~ 要求达到的效果是 S:ABCDEFGH T:CDEF 逆置后: S:ABFEDCGH
求高手帮忙解答一下关于程序的题目,纠结一上午,跪求帮忙!
``` #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct node *PtrToNode; typedef PtrToNode stack; typedef PtrToNode Position; struct node { char *symbol; Position next; }; int Isempty(stack s) { return s->next == NULL; } void Pop(stack s) { Position first; if(Isempty(s)) printf("Empty stack!\n"); else { first = s->next; s->next = s->next->next; free(first); } } void MakeEmpty(stack s) { if(s == NULL) printf("Must use CreatStack first!\n"); else while(!Isempty(s)) Pop(s); } stack CreatStack() { stack s = (node *)malloc(sizeof(struct node)); if(s == NULL) printf("Out of space!\n"); s->next = NULL; MakeEmpty(s); return s; } void Push(char *sign, stack s) { Position temp = (node *)malloc(sizeof(struct node)); if(temp == NULL) printf("Out of space!\n"); else { temp->symbol = sign; temp->next = s->next; s->next = temp; } } char* Top(stack s) { if(!Isempty(s)) return s->next->symbol; printf("Empty stack!\n"); return 0; } int main() { char *sign1; // char *sign2 = ")"; // char *sign3 = "begin"; // char *sign4 = "end"; // char *sign5 = "["; // char *sign6 = "}"; (1) stack s = CreatStack(); while(scanf("%s", sign1) == 1) { //(2) stack s = CreatStack(); if(Isempty(s)) { (3) if(strcmp(sign1, "(") == 0) printf("PPPPPPPPPPPP\n"); if(strcmp(sign1, "(") == 0 || strcmp(sign1, "[") == 0 || strcmp(sign1, "{") == 0 || strcmp(sign1, "begin") == 0) { Push(sign1, s); } else { printf("AWrong!!!\n"); break; } } else { if(strcmp(sign1, "(") == 0 || strcmp(sign1, "[") == 0 || strcmp(sign1, "{") == 0 || strcmp(sign1, "begin") == 0) { Push(sign1, s); printf("EEEEEEEE\n"); } else if(strcmp(sign1, ")") == 0 || strcmp(sign1, "]") == 0 || strcmp(sign1, "}") == 0 || strcmp(sign1, "end") == 0) { printf("DDDDDDD\n"); if((strcmp(Top(s), "(") == 0 && strcmp(sign1, ")") == 0) || (strcmp(Top(s), "[") == 0 && strcmp(sign1, "]") == 0)|| (strcmp(Top(s), "{") == 0 && strcmp(sign1, "}") == 0) || (strcmp(Top(s), "begin") == 0 && strcmp(sign1, "end") == 0)) { Pop(s); printf("GGGGGGGGGGGGGGGGGGG\n"); } else { printf("BWrong!!!\n"); break; } } } } if(Isempty(s)) printf("You are right!\n"); else printf("CWrong!!!\n"); printf("%s\n", Top(s)); return 0; } ``` 我搞不明白当stack s在while之前的话,只输入“(”,应该会执行(3)处的if,可事实是不执行 然后我换了下stack s的位置就可以执行了,为什么???
MS SQL Server导入CSV文件数据,总有字段被截断,但用bulk insert又能成功,怎么回事啊?
自己电脑,使用MS SQL Server 2014自带的数据导入工具导入CSV文件数据,老是有某个字段截断报错!我把字段长度改成varchar(max),照样截断报错,极度无语……将CSV文件仔仔细细检查了遍,正文中没有逗号,没有错列,没有乱码。但是就是截断报错……而且,这种现象不止发生在一个CSV文件上,我还导入很多CSV文件,也都出现这种错误。 然而,虽然截断报错了,但是这个导入动作已经在数据库里创建了表结构,于是我用bulk insert把CSV文件数据导入进去,结果一次性成功!这说明字段数据类型没错啊!但是为什么导入工具就老是截断报错呢?请各位帮忙解答一下,十分感谢 ![图片说明](https://img-ask.csdn.net/upload/201905/28/1559054828_312298.jpg) ![图片说明](https://img-ask.csdn.net/upload/201905/28/1559054796_302526.jpg) ****补充说明:**非常确定字段数据类型和长度符合要求,比如某字段最长一个值就112,我设的长度为varchar(250),但是用导入工具导入时仍然提示截断!数据内不存在特殊字符、空格此类。**
下面的代码怎样在main函数中调用上面的函数,请帮忙,谢谢
``` #include <iostream> #include <string> using namespace std; //#define MaxValue 10000; //初始设定的权值最大值 //#define MaxBit 4; //初始设定的最大编码位数 //#define Max 20 //初始设定的最大结点个数 struct HaffNode //哈夫曼树的结点结构 { string data; int weight; //权值 int flag; //标记 int parent; //双亲结点下标 int leftChild; //左孩子下标 int rightChild; //右孩子下标 }; struct Code //存放哈夫曼编码的数据元素结构 { int bit[]; //数组 int start; //编码的起始下标 int weight; //字符的权值 }; void Haffman( int n, HaffNode haffTree[]) //建立叶结点个数为n权值为weight的哈夫曼树haffTree { int j, m1, m2, x1, x2; //哈夫曼树haffTree初始化。n个叶结点的哈夫曼树共有2n-1个结点 for(int i = 0; i < 2 * n - 1 ; i++) { haffTree[i].weight = 0; haffTree[i].parent = 0; haffTree[i].flag = 0; haffTree[i].leftChild = -1; haffTree[i].rightChild = -1; } //构造哈夫曼树haffTree的n-1个非叶结点 for(int i = 0;i < n-1;i++) { m1 = m2 = n; x1 = x2 = 0; for(j = 0; j < n+i;j++)//找出剩下的两个比较小的节点 { if (haffTree[j].weight < m1 && haffTree[j].flag == 0) { m2 = m1; x2 = x1; m1 = haffTree[j].weight; x1 = j; } else if(haffTree[j].weight < m2 && haffTree[j].flag == 0) { m2 = haffTree[j].weight; x2 = j; } } //将找出的两棵权值最小的子树合并为一棵子树 haffTree[x1].parent = n+i; haffTree[x2].parent = n+i; haffTree[x1].flag = 1; haffTree[x2].flag = 1; haffTree[n+i].weight = haffTree[x1].weight+haffTree[x2].weight; haffTree[n+i].leftChild = x1; haffTree[n+i].rightChild = x2; } } void dayin(HaffNode haffTree[],int k ,int n) { if(k==0) { return; } for (int i=0;i<n;i++) { cout<<" "; } if(haffTree[k].parent!=-1) { cout<<"|_"; } else { cout<<" "; } cout<<haffTree[k].data<<endl; int L=haffTree[k].leftChild; int R=haffTree[k].rightChild; dayin(haffTree,R,n+2); dayin(haffTree,L,n+2); } void HaffmanCode() //由n个结点的哈夫曼树haffTree构造哈夫曼编码haffCode { int i,k,n; HaffNode haffTree[2*n-1]; Code cd[2*n-1]; int child; int parent; //求n个叶结点的哈夫曼编码 for(int i = 0; i < n; i++) { cd->start = n-1; //不等长编码的最后一位为Max-1 cd->weight = haffTree[i].weight; //取得编码对应权值的字符 child=i; parent = haffTree[child].parent; //由叶结点向上直到根结点 while(parent != 0) { if(haffTree[parent].leftChild == child) cd->bit[cd->start] = 0; //左孩子结点编码0 else cd->bit[cd->start] = 1;//右孩子结点编码1 cd->start--; child = parent; parent = haffTree[child].parent; } } Haffman( 0, haffTree); cout<<"输出哈夫曼码:"; for(i=1;i<=n;i++) { cout<<haffTree[i].data<<": "; for(k=cd[i].start;k<=n;k++) cout<<cd[i].bit[k]; cout<<endl; } for(i=0;i<2*n-1;i++) { if(haffTree[i].flag==0) dayin(haffTree,2*n-1,0); cout<<endl; } } int main(int argc, char *argv[]) { int i, j,n ; cout<<"输入字符个数: "; cin>>n; string* s = new string[2*n-1]; int* w = new int[2*n-1]; for(i=0;i<n;i++) { cout<<"请输入字符:"; cin>>s[i]; cout<<"请输入权值: "; cin>>w[i]; } return 0; } ``` 怎样在main函数中调用上面的haffmancode函数,急求解答,各位能人帮帮忙吧,谢谢!!!
文件处理相关的问题,求解答!怎么解啊??
我这代码写出来会陷入死循环不知道为啥。。。有大佬能帮忙看看吗 题目是显示一个清单显示工具的数量,名称,号码,成本,需要用文件的相关知识,程序需要能罗列,删除,覆盖,加入数据 // wenj.cpp : Defines the entry point for the console application. // #include "stdafx.h" struct Tools { unsigned int record; char name[20]; unsigned int number; double cost; };//定义结构体储存工具相关信息 void textfile(FILE *readptr); void deleterecord(FILE *fptr); void newrecord(FILE *fptr); int main(int argc, char* argv[]) { FILE *cfptr; if((cfptr=fopen("hardware.dat","wb"))==NULL) { printf("文件不能打开\n"); } else { struct Tools blanktool={0,"",0,0}; int i=0; for(i=0;i<100;i++) { fwrite(&blanktool,sizeof(struct Tools),1,cfptr); } }//先储存100条空记录 int j=0; for(j=0;;j++) { int choice; printf("输入你的选择\n"); printf("1表示保存\n2表示更新数据\n3表示加入数据记录\n4表示删除数据\n5表示结束程序\n?"); scanf("%d",&choice); if(choice==1) { textfile(cfptr);continue;//输入1表示保存txt文件 } else if(choice==2) { deleterecord(cfptr); newrecord(cfptr);//输入2表示删除一条旧的记录并保存一条新的记录 continue; } else if(choice==3) { newrecord(cfptr);continue;//输入3表示输入一条新纪录 } else if(choice==4) { deleterecord(cfptr);continue;//输入4表示删除某一条记录 } else { break; }//输入相关选择 } fclose(cfptr); return 0; } void textfile(FILE *readptr)//保存txt文件 { FILE *writeptr; if((writeptr=fopen("hardware.txt","w"))==NULL) { printf("文件无法打开\n"); } else { rewind(readptr); fprintf(writeptr,"%d %-20s %d %lf\n","record","name","number","cost"); while(!feof(readptr)) { struct Tools gongjv={0,"",0,0}; int result=fread(&gongjv,sizeof(struct Tools),1,readptr); if(result!=0&&gongjv.record!=0) { fprintf(writeptr,"%d %-20s %d %d\n",gongjv.record,gongjv.name,gongjv.number,gongjv.cost); } } fclose(writeptr); } } void deleterecord(FILE *fptr)//删除记录 { printf("输入你想删除的工具的序号1-100\n"); int num; scanf("%d",&num); fseek(fptr,(num-1) *sizeof(struct Tools),SEEK_SET); struct Tools gongjv; fread(&gongjv,sizeof(struct Tools),1,fptr); if(gongjv.record==0) { printf("记录不存在\n"); } else { fseek(fptr,(num-1) *sizeof(struct Tools),SEEK_SET); struct Tools blanktool={0,"",0,0}; fwrite(&blanktool,sizeof(struct Tools),1,fptr); } } void newrecord(FILE *fptr)//输入新记录 { printf("输入你想加入的工具的序号1-100\n"); int num; scanf("%d",&num); fseek(fptr,(num-1) *sizeof(struct Tools),SEEK_SET); struct Tools gongjv={0,"",0,0}; fread(&gongjv,sizeof(struct Tools),1,fptr); if(gongjv.record!=0) { printf("该记录非空\n"); } else { printf("输入数据\n"); scanf("%-20s %d %d\n",&gongjv.name,&gongjv.number,&gongjv.cost); gongjv.record=num; fseek(fptr,(gongjv.record-1)*sizeof(struct Tools),SEEK_SET); fwrite(&gongjv, sizeof(struct Tools),1,fptr); } }
怎么理解C与C++的数据类型扩充能力
想问C中有结构体,共用体等这样用户自定义的数据类型可以扩充,在数据类型使用时为什么不如C++实用?有没有简单的例子或见解,可能问题问的不够明朗,就是怎么理解数据类型的扩充问题,有没有大神帮忙解答,谢谢。
java基础高手看这里了,这几道基础性的面试题求解答。
同学出去应聘,笔试的时候遇到这几道基础题不会做,拿给我看,发现自己也不怎么会,java基础好多都有些忘了,来帮忙解答一下吧。 1、实现一个函数,函数有一个形参,类型为整数,功能是将形参的十进制数的二进制序列打印到控制台上。 2、实现一个函数,函数有一个形参,类型为集合,功能是将集合中的内容按照每行3个输出(写出两种以上方法)。 3、有数据表,字段定义为如下: 客户 商品 报价 报价日期 表中存放着不同客户,不同商品,不同日期的报价。 请写一条sql语句。查出不同客户,不同商品,最新和最老的报价。 (结果包括:客户,商品,最新报价,最老报价)提示:需用子查询。 4、先有一个树形数据集合,集合中保存有所有树节点数据,节点类型包括两个属性,即子节点ID(child),父节点ID(parent) n个无序的节点组成此集合。请实现一个函数,将集合中的无序节点整理,将数据按树形结构输出,格式不限。
动态规划入门到熟悉,看不懂来打我啊
持续更新。。。。。。 2.1斐波那契系列问题 2.2矩阵系列问题 2.3跳跃系列问题 3.1 01背包 3.2 完全背包 3.3多重背包 3.4 一些变形选讲 2.1斐波那契系列问题 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n&gt;=2,n∈N*)根据定义,前十项为1, 1, 2, 3...
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
shell脚本:备份数据库、代码上线
备份MySQL数据库 场景: 一台MySQL服务器,跑着5个数据库,在没有做主从的情况下,需要对这5个库进行备份 需求: 1)每天备份一次,需要备份所有的库 2)把备份数据存放到/data/backup/下 3)备份文件名称格式示例:dbname-2019-11-23.sql 4)需要对1天以前的所有sql文件压缩,格式为gzip 5)本地数据保留1周 6)需要把备份的数据同步到远程备份中心,假如...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
为什么你学不过动态规划?告别动态规划,谈谈我的经验
动态规划难吗?说实话,我觉得很难,特别是对于初学者来说,我当时入门动态规划的时候,是看 0-1 背包问题,当时真的是一脸懵逼。后来,我遇到动态规划的题,看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手,关于递归的,我之前也写过一篇套路的文章,如果对递归不大懂的,强烈建议看一看:为什么你学不会递归,告别递归,谈谈我的经验 对于动态规划,春招秋招时好多题都会用到动态...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
2020年大前端发展趋势
迅速发展的前端开发,在每⼀年,都为开发者带来了新的关键词。2019 年已步⼊尾声,2020 年前端发展的关键词⼜将有哪些呢?发展的方向又会是什么呢?参考2019年大前端的发展,不出意外,前端依旧会围绕⼩程序、超级APP、跨端开发、前端⼯程化以及新技术运用等几个方面进行展开(可以参考2019年大前端技术趋势深度解读)。 小程序 在⼩程序⽅⾯,今年仍然是⼩程序突⻜猛进的⼀年,各⼤主流的 App 都上线...
如何安装 IntelliJ IDEA 最新版本——详细教程
IntelliJ IDEA 简称 IDEA,被业界公认为最好的 Java 集成开发工具,尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克,开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢,一直是 Eclipse 的忠实粉丝,差不多十年的老用户了。很早就接触到了 IDEA...
1个月时间整理了2019年上千道Java面试题,近500页文档!
Spring 面试题 1、一般问题 1.1、不同版本的 spring Framework 有哪些主要功能? 1.2、什么是 spring Framework? 1.3、列举 spring Framework 的优点。 1.4、spring Framework 有哪些不同的功能? 1.5、spring Framework 中有多少个模块,它们分别是什么? 1.6、什么是 spring ...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
为什么要推荐大家学习字节码?
配套视频: 为什么推荐大家学习Java字节码 https://www.bilibili.com/video/av77600176/ 一、背景 本文主要探讨:为什么要学习 JVM 字节码? 可能很多人会觉得没必要,因为平时开发用不到,而且不学这个也没耽误学习。 但是这里分享一点感悟,即人总是根据自己已经掌握的知识和技能来解决问题的。 这里有个悖论,有时候你觉得有些技术没用恰恰是...
在阿里,40岁的奋斗姿势
在阿里,40岁的奋斗姿势 在阿里,什么样的年纪可以称为老呢?35岁? 在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。 他们的奋斗姿势是什么样的呢? 洛神赋 “翩若惊鸿,婉若游龙。荣曜秋菊,华茂春松。髣髴兮若轻云之蔽月,飘飖兮若流风之回雪。远而望之,皎若太阳升朝霞;迫而察之,灼若芙蕖出渌波。” 爱洛神,爱阿里云 2018年,阿里云网络产品部门启动洛神2.0升...
【超详细分析】关于三次握手与四次挥手面试官想考我们什么?
在面试中,三次握手和四次挥手可以说是问的最频繁的一个知识点了,我相信大家也都看过很多关于三次握手与四次挥手的文章,今天的这篇文章,重点是围绕着面试,我们应该掌握哪些比较重要的点,哪些是比较被面试官给问到的,我觉得如果你能把我下面列举的一些点都记住、理解,我想就差不多了。 三次握手 当面试官问你为什么需要有三次握手、三次握手的作用、讲讲三次三次握手的时候,我想很多人会这样回答: 首先很多人会先讲下握...
压测学习总结(1)——高并发性能指标:QPS、TPS、RT、吞吐量详解
一、QPS,每秒查询 QPS:Queries Per Second意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。互联网中,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。 二、TPS,每秒事务 TPS:是TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。一个事务是指一...
新程序员七宗罪
当我发表这篇文章《为什么每个工程师都应该开始考虑开发中的分析和编程技能呢?》时,我从未想到它会对读者产生如此积极的影响。那些想要开始探索编程和数据科学领域的人向我寻求建议;还有一些人问我下一篇文章的发布日期;还有许多人询问如何顺利过渡到这个职业。我非常鼓励大家继续分享我在这个旅程的经验,学习,成功和失败,以帮助尽可能多的人过渡到一个充满无数好处和机会的职业生涯。亲爱的读者,谢谢你。 -罗伯特。 ...
活到老,学到老,程序员也该如此
全文共2763字,预计学习时长8分钟 图片来源:Pixabay 此前,“网传阿里巴巴要求尽快实现P8全员35周岁以内”的消息闹得沸沸扬扬。虽然很快被阿里辟谣,但苍蝇不叮无缝的蛋,无蜜不招彩蝶蜂。消息从何而来?真相究竟怎样?我们无从而知。我们只知道一个事实:不知从何时开始,程序猿也被划在了“吃青春饭”行业之列。 饱受“996ICU”摧残后,好不容易“头秃了变强了”,即将步入为“高...
Vue快速实现通用表单验证
本文开篇第一句话,想引用鲁迅先生《祝福》里的一句话,那便是:“我真傻,真的,我单单知道后端整天都是CRUD,我没想到前端整天都是Form表单”。这句话要从哪里说起呢?大概要从最近半个月的“全栈工程师”说起。项目上需要做一个城市配载的功能,顾名思义,就是通过框选和拖拽的方式在地图上完成配载。博主选择了前后端分离的方式,在这个过程中发现:首先,只要有依赖jQuery的组件,譬如Kendoui,即使使用...
2019年Spring Boot面试都问了什么?快看看这22道面试题!
Spring Boot 面试题 1、什么是 Spring Boot? 2、Spring Boot 有哪些优点? 3、什么是 JavaConfig? 4、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器? 5、Spring Boot 中的监视器是什么? 6、如何在 Spring Boot 中禁用 Actuator 端点安全性? 7、如何在自定义端口上运行 Sprin...
Unity项目在pc和ios设备上黑屏的原因探究
0x00 由于项目上线了windows平台的项目(别问我为什么,咱也不敢说,咱也不敢问),由Unity5.4.6升级到Unity2018的过程中,遇到了各种各样的坑,本文为避坑指南1。本项目没有使用HDR和抗锯齿,由于查这几个问题查到吐血,前后用了3天的时间,本文充满了怨气,行文非常啰嗦,需要快速解决问题的,可以直接拉到最后看结论。 0x01 法线贴图 项目在unity2018出了新的androi...
关于裁员几点看法及建议
最近网易裁员事件引起广泛关注,昨天网易针对此事,也发了声明,到底谁对谁错,孰是孰非?我们作为吃瓜观众实在是知之甚少,所以不敢妄下定论。身处软件开发这个行业,近一两年来,对...
面试官:关于Java性能优化,你有什么技巧
通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。 一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。 下面将提供一些在JAVA程序的设计和编码中,为了能够提高JAVA程序的性能,而经常采用的一些方法和技巧。 1.对象的生成和大小的调整。 J...
【图解算法面试】记一次面试:说说游戏中的敏感词过滤是如何实现的?
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。 小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了下下事情的发生… 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过滤吗?,例如在游戏里,如果我们发送“你在干嘛?麻痹演员啊你?”,由于“麻痹”是一个敏感词,...
相关热词 c# id读写器 c#俄罗斯方块源码 c# linq原理 c# 装箱有什么用 c#集合 复制 c# 一个字符串分组 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图
立即提问