java里面,关于set的元素的添加的问题,下面有代码(标题不方便叙述)
 HashSet<String> set = new HashSet<String> () ;
set.add("abc") ;

这样写能够添加abc这个字符串。
但是如果前边的string变成问号就会报错,这是为什么呢?

 HashSet<?> set = new HashSet<String> () ;
set.add("abc") ;

4个回答

Collection<?>这样一个类型,读作“未知Colleciton”。它的意思是说Colleciton的元素类型可以匹配任意类型,我们把它称作通配符类型,我们这样写:

 void printCollection(Colleciton<?> c){ 
       for (Object e: c){ 
          System.out.println(e); 
        } 
     } 

现在我们用任意类型的集合来调用它了,需要注意的是内部方法printColleciton(),我们任可以从c中来读出元素,并且这些元素是Object类型,而且是安全的,因为无论集合中是什么类型,它总包括Object,但是将任意对象加到集合中是不安全的:

     Colleciton<?> c = new ArrayList<String>(); 
     c.add(new Object());//编译时错误 

由于我们不知道c持有的是什么类型的元素,我们不能加object到集合中去。add()方法用类型E作为参数,(集合的元素类型)当真正的参数类型是?的时候,它代表的是一些未知类型。任何传递给add()方法的参数必须是这个未知类型的子类型。由于我们不知道未知类型,所以我们传递给它任何东西。主要的例外是null,它是每一个类型的成员。

m0_37676512
龙猫12138 谢谢你的热心解答!
2 年多之前 回复

首先当你为声明定义类型后你必需为创建的对象也定义相同类型否则报错:HashSet<?> set = new HashSet <?>() ;

然后?不是一个类型,你要定义的类型必需有意义,如Object,String

最后说下集合没有定义类型时默认可以放入Object也就是任何类型,如果你定义成int类型就无法add("abc")了只能add(1234)

m0_37676512
龙猫12138 谢谢你的热心解答!
2 年多之前 回复

查阅了一番,总结就是 : ? 通配符。也可以理解为占位符。 ?类型只能不能添加除 null 以外的值,但是可以接收其他组

  Set<Integer> set1 = new HashSet<Integer>();
        set1.add(1);
        set1.add(2);
        set1.add(3);

        Set<?> set2 = new HashSet();
        set2 = set1;

还有
? extends E: 可以接收E类型或者E的子类型。上限。
? super E: 可以接收E类型或者E的父类型。下限

我平时都用object ,所以对?类型也不是特别了解

m0_37676512
龙猫12138 谢谢你的热心解答!
2 年多之前 回复

Collection<?>这样一个类型,读作“未知Colleciton”。它的意思是说Colleciton的元素类型可以匹配任意类型,我们把它称作通配符类型,我们可以写成Object 类型就可以啦。

m0_37676512
龙猫12138 谢谢你的解答
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java set集合 元素不能重复?
set中的元素是不能相等重复的,这一点我知道,那么怎样才是(不)重复呢?<br/> 是hashcode相等?是地址相同?是元素的equal返回true?<br/> 猜测:先判断是不是同一个引用(地址),再判断equal<br/> 我自己做了试验:new 两个对象 添加到set里 结果set.size()=2 <br/> 重写元素的equal方法直接返回true 结果size=1<br/> 如果重新元素的equal方法直接返回false, 但只new了一个对象,set添加两次该对象,结果size=1
java项目源代码里面的get方法为什么总写在set方法前面
java项目源代码里面的get方法为什么总写在set方法前面 感觉有点不符合逻辑 不是设置之后再获取吗,
java set1的元素全部复制给set2
今天做题 偶然发现一个错误,在我的理解中,我是创建了2个set,这应该算是2个对象,他们应该有不同的地址。搞不懂为什么第二次往set2中添加元素,set1中也会添加。 例如: import java.util.*; public class test{ public static void main(String[] args){ HashSet<Integer> set1=new HashSet<Integer>(); HashSet<Integer> set2=new HashSet<Integer>(); set1.add(1); set2=set1; set2.add(2); Iterator iterator1=set1.iterator(); while(iterator1.hasNext()){ System.out.println(iterator1.next()); } Iterator iterator2=set2.iterator(); while(iterator2.hasNext()){ System.out.println(iterator2.next()); } } } 输出结果为 1 2 1 2
java set集合快速查找?
看书说散列集(表)即hashtable可以快速查找元素。但是据我所知,hashset并没有查找元素的方法。<br/> 如果要快速找到一个元素,首先要获得该元素的hashcode,但是我也没见过什么保存hashcode的代码。<br/> 只有获得这个元素的前提下才能计算出它的hashcode,可是我都获得这个元素了,还要去集合里面查找干嘛?
数据库中所有字段都有值,查询后返回的java对象部分属性却为null?
刚开始是set和get方法中的变量名与MySQL数据库字段不一样,打印时一直为null, 将变量名修改成数据库字段一样就好了。不知道为什么,请大佬解答 代码有点多 我贴点重要的 ``` //查询功能实现 public static void Query() throws SQLException { List<Account> accounts=as.query(); if(!accounts.isEmpty()){ //遍历集合 System.out.println("账目编号\t账目描述\t消费价格\t消费日期"); for(Account account:accounts){ System.out.println(account.getAccount_id()+"\t"+account.getAccount_desc()+"\t"+account.getAccount_price()+"\t"+account.getAccount_date()); } } } ``` ``` 就是修改的下面private的4个变量,之前是 String a_id;String a_desc;String a_price;String a_date; public class Account { private String account_id; private String account_desc; private String account_price; private String account_date; public String getAccount_id() { return account_id; } public void setAccount_id(String account_id) { this.account_id = account_id; } public String getAccount_desc() { return account_desc; } public void setAccount_desc(String account_desc) { this.account_desc = account_desc; } public String getAccount_price() { return account_price; } public void setAccount_price(String account_price) { this.account_price = account_price; } public String getAccount_date() { return account_date; } public void setAccount_date(String account_date) { this.account_date = account_date; } } ``` 下面是操作数据库的代码 ``` public class AccountService { BaseDao sd=new BaseDao(); public List<Account> query() throws SQLException { QueryRunner qr=new QueryRunner(); String sql="select * from account"; Object[] params={}; List<Account> list=qr.query(this.sd.getConnection(),sql, new BeanListHandler<Account>(Account.class)); return list; } ``` 下面是数据库的设计和数据 ![图片说明](https://img-ask.csdn.net/upload/202001/17/1579230436_506183.png) ![图片说明](https://img-ask.csdn.net/upload/202001/17/1579230450_227715.png)
运用书上的朴素贝叶斯分类代码,但代码出错,怎么解决,大佬求解。。。
``` import numpy as np class Naive_bayes(object): def __init__(self,p0_vector,p1_vector,p_absolute,vocab_set): """ 输入:朴素贝叶斯实例self,p0_vector表示类别c0的单词词频P(X|c0) p1_vector 表示类别c1的单词词频P(X|c1),p_absolute 表示类别c1的概率 P(c1),单词字典vocab_set 输出:无 描述:朴素贝叶斯构造函数 """ self.p0_vector = p0_vector self.p1_vector = p1_vector self.p_absolute = p_absolute self.vocab_set = vocab_set super(Naive_bayes,self).__init__() def create_vocab_list(self,dataset): """ 输入:朴素贝叶斯实例self,训练数据集 dataset 输出: 无 描述:根据测试样本构建你单词字典 """ vocab_set = set([]) for doucument in dataset: vocab_set = vocab_set|set(doucument) self.vocab_set = list(vocab_set) def wordset2vector(self,inputset): """ 输入:朴素贝叶斯实例self,单条文本inputset 输出:文本向量 return_vec 描述:将每条文本转换为数字向量,建立于字典同等大小的文本向量,若语句中的词典在字典表中出现则标记为1,否则为0 """ return_vec = [0]*len(self.vocab_set) for word in inputset: if word in self.vocab_set: return_vec[self.vocab_set.index(word)] += 1 return return_vec def computer_conditon_probablility(self,words_vec,labels): """ 输入:朴素贝叶斯实例self,训练文本向量集合words——vec,文本标签labels 输出:无 描述:根据文本向量集合计算类别c(i)的单词词频P(X|ci)和概率P(ci) """ num_train_docs = len(words_vec) num_words = len(words_vec[0]) p0_num = np.ones(num_words) p1_num = np.ones(num_words) for i in range(num_train_docs): if labels[i] == 1: p1_num += words_vec[i] else: p0_num += words_vec[i] self.p0_vector = np.log(p0_num/sum(p0_num)) self.p1_vector = np.log(p1_num / sum(p1_num)) self.p_absolute = sum(labels)/float(num_train_docs) def fit(self,dataset,labels): """ 输入:朴素贝叶斯实例self,训练文本向量集合dataset,文本标签labels 输出:无 描述:根据训练样本集训练朴素贝叶斯分类器 """ self.create_vocab_list(dataset) # 构建样本单词字典 words_vec = [] for inputset in dataset: words_vec.append(self.wordset2vec(inputset)) # 构建文本向量 self.compute_condition_probability(words_vec,labels) # 计算条件概率P(X|ci)和类别c1的概率P(c1) def predict(self,word_vec): """ 输入:朴素贝叶斯实例self,测试文本向量word__vec 输出:word_vec所属类别 描述:利用朴素贝叶斯分类器预测文本类别 """ p0 = sum(word_vec*self.p0V) + np.log(1.0-self.p_absolute) p1 = sum(word_vec*self.p1V) + np.log(self.p_absolute) return 1 if p1 > p0 else 0 def load_dataset(filename,delimiter=" "): """ 输入:数据文件路径,分隔符 输出:数据集 描述:读取数据文件生成np.nArry类型的数据集 """ dataset = [] labels = [] with open(filename,'r') as fp: # 数据文件内容格式“Daily English Learning” while True: lines = fp.readline().strip() # lines="Daily English Learning" if not lines: break feature = lines.split(delimiter) # feature= ['daily','english','learning','1'] key = int(feature[-1]) values = [v.lower() for v in feature[0:-1]] labels.append(key) dataset.append(values) return dataset,labels if __name__ == "__main__": filename = "bayes.data" dataset,labels = load_dataset(filename) naive_bayes = Naive_bayes() naive_bayes.fit(dataset,labels) testset = ['Learning','English'] test_vec = naive_bayes.wordset2vec(testset) estimate =naive_bayes.predict(test_vec) print('[{0},{1} estimate is:{2}'.format(testset[0],testset[1],estimate)) ``` ![图片说明](https://img-ask.csdn.net/upload/202001/18/1579333779_71473.png)
遍历Map集合的问题请教一下?
遍历Map集合时,有方法entrySet(),将Map集合装进Set集合。我想问的是,开发者为啥不装List集合呢?这之中有什么说法吗?还是只是一个选择而已呢?
使用freetype中的FT_Set_Pixel_Sizes(...)返回的错误码是35
使用freetype中的FT_Set_Pixel_Sizes(...)返回的错误码是35代表什么意思
一个Java的Set的remove问题
为什么改变值后,无法删除? ``` package mytest; import java.util.HashSet; import java.util.Set; public class Key { int i; public Key(int i) { this.i = i; } public int hashCode() { return i; } public boolean equals(Object obj) { return i == ((Key)obj).i; } public static void main(String[] args) { Set<Key> set = new HashSet<Key>(); Key k1 = new Key(1); Key k2 = new Key(2); set.add(k1); set.add(k2); System.out.println("原来:"+set); set.remove(k1); System.out.println("删除k1后:"+set); k2.i = 1; System.out.println("改变k2.i为1后:"+set); boolean f = set.remove(k2);//这里为什么失败? System.out.println("是否删除k2?:"+f); System.out.println("删除操作后:"+set); k2.i = 2; System.out.println("改变k2.i为2后:"+set); f = set.remove(k2); System.out.println("是否删除k2?:"+f); System.out.println("删除操作后:"+set); } } ```
OPT算法的具体代码解释以及LRU算法及其调用的MyStack栈的具体解释的问题?
主要是在OPT算法中的超出容量list的部分存在问题 ``` public OPT(int[] arr) { for (int i = 0; i < arr.length; i++) { if (list.size() < capacity) { // 小于list初始容量 if (!list.contains(arr[i])) { // list没有该页面,将其添加进list尾部 list.add(arr[i]);//列表+1 } else { continue; } } else {// 超出list容量 index[0] = 100; index[1] = 101; if (!list.contains(arr[i])) { // 下一个页面如果不在list中 int a = 0; for (int j = i; j < arr.length; j++) { if (list.contains(arr[j])) { // arr[j]这个页面会在测试数据中会出现较早 if (index[0] != list.indexOf(arr[j])) { //indexOf()的用法:查找arr[j]中,第一次出现指定字符串的位置。 位置不是下标为0 index[a++] = list.indexOf(arr[j]);// 返回此列表中首次出现的指定元素的索引 if (a == 2) { break; } } } } list.set(noExist(), arr[i]);// 置换掉永不使用的,或许在最长时间内不再访问的页面 } else { // 下一个页面在list中 continue;//列表保持不变 } } traverse();//调用traverse函数 } System.out.println("访问页面需从外存调入的次数为:"+(num-1));//计算访问页面需要从外存调入的次数 System.out.println("缺页率为:"+(1-(float)(num-1)/arr.length));//计算缺页率 } ``` 以下是我参考的链接文档 [https://blog.csdn.net/AdvancingStone/article/details/79110586]( "") 我在LRU算法的代码解释以及该程序调用的MyStack中也存在问题,请大佬们给我具体解释,最好有每一句代码的解释,我不懂的不是这些算法的原理,而是整个运算的代码过程,感谢了!
Cipher 代码的实现过程
Problem Description A spy is using a clever cipher technique to encode and decode messages. The technique is very efficient as it enables him to send and receive any message, no matter how long it is with only three numbers! After many great efforts, The Department of National Security managed to figure out how the technique works: 1. First of all, the only characters used are the space and lower case English letters. Each character is assigned an integer called the character volume, a space character has volume 1, ‘a’ has volume 2, ‘b’ has volume 3 and so on until ‘z’ which has volume 27. The volume of the whole message V is the sum of volumes of characters in the message. 2. A message consists of a number of words W, a word is a consecutive sequence of lower case letters, messages have no leading or trailing spaces and there is only one space between consecutive words. 3. For a certain V and W, let S be the lexicographically sorted set of messages that have volume V and consists of exactly W words. We can refer to a certain message using its one-based index I in S. So when the spy wants to send a message M, he calculates its Volume V and the number of words it contains W and finds its index I in the corresponding set S (its index among all sorted messages of volume V with W words) and sends only three numbers along: V, W and I! The Department of National Security has done a great effort so far, yet they seek your help to decode messages sent by the spy! That is, given V, W and I you must decrypt the spy’s message or determine that there is no such one! Input The first line of input contains an integer (1 <= T <= 200), the number of test cases. Each data set consists of a line with three integers the volume of the message (1 <= V <= 75), the number of words (1 <= W <= 20), and the index of message (1 <= I <= 1018). Output For each test case, print one line containing the decrypted message or “Corrupted!” if there is no valid message corresponding to the given inputs. Sample Input 3 7 2 3 2 1 2 50 2 39098532022 Sample Output Case #1: aa a Case #2: Corrupted! Case #3: big bang
java为什么吗list允许存储重复元素,而set不允许存储重复元素
java为什么吗list允许存储重复元素,而set不允许存储重复元素
Java语言中的get set方法有什么用
Java语言中的get set方法有什么用,直接调用字段不是更简单么?有人说验证输入,但是也没有验证的代码写出来啊?
关于JAVA Set容器contains的问题
class AAA{ int x; public AAA(int x) { this.x=x;} public int hashCode() { return x*11+17;} public boolean equals(AAA e) { return this.x==e.x;} } public class 参数{ public static void main(String[] args) { HashSet<AAA > set = new HashSet<AAA >(); AAA a1 = new AAA(5); AAA a2 = new AAA(5); System.out.println(a1.equals(a2)); System.out.println(set.add(a1)); System.out.println(set.contains(a2)); } } ``` 明明a1和a2是相等的,但contains返回的是false,请问要怎么改? ```
关于java Set的compareTo方法的问题
这几天学习java set集合的时候发现一个这个问题,当我写一个类并且实现Comparable接口的方法,在Test类main方法中生成一个A对象,然后将这个A对象add到set调试到compareTo方法发现this和o的地址指向同一个地址,各位大咖能告诉我为什么吗?谢谢 ``` /** * Created by wanli on 2017/8/5. */ public class A implements Comparable<A> { private int age; public A(int age) { this.age = age; } public A() { } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public int compareTo(A o) { return o.getAge() - this.age; } @Override public String toString() { return "A{" + "age=" + age + '}'; } } ``` ``` public class Test { public static void main(String[] args) { TreeSet<A> set = new TreeSet<>(); A a = new A(14); A b = new A(13); set.add(a); set.add(b); for (A a1 : set) System.out.println(a1.toString()); } } ``` ![图片说明](https://img-ask.csdn.net/upload/201708/07/1502091932_511091.png)
Harmonious Set 代码怎么实现呢
Problem Description For a giving integer n ( n > 0 ) , the set Sn consists of the non negative integers less than n. For example:S5 = {0,1,2,3,4}. A subset of Sn is harmonious if and only if the sum of its elements is a multiply of n. Now your task is easy. For a given n , you should find the number of harmonious subset of Sn. Input There is a number C in the first line , meaning there are C cases . C is guaranteed no more than 300. Then C cases below. Each case is a positive integer n in a single line. n is not greater than 10^9. Output For each case , Output the answer mod 1000000007 in a single line . Sample Input 5 1 2 3 10 1000 Sample Output 2 2 4 104 618918635
java 集合什么情况需要用到迭代器
我看书学习java集合时经常看到 iterator迭代器,可以通过它来遍历集合,删除元素,如果是有序集合List还可以添加元素。<br/> 以前学集合的时候只是简单的学了几个方法add set remove get等等。在做项目的时候也完全够用。这几个方法和迭代器的方法是不是重复了<br/> 那么,问题来了,什么时候需要用到迭代器?这个迭代器需要熟练掌握吗?
The Heart of the Country 代码的编写
Problem Description The nation of Graphia is at war. The neighboring nations have for long watched in jealousy as Graphia erected prosperous cities and connected them with a network of highways. Now they want a piece of the pie. Graphia consists of several cities, connected by highways. Graphian terrain is rough, so the only way to move between the cities is along the highways. Each city has a certain number of troops quartered there. Graphia's military command knows that it will require a certain number of troops, K , to defend any city. They can defend a city with the troops stationed there, supported by the troops in any other city which is directly connected with a highway, with no cities in between. Any troops further away than that simply cannot get there in time. They also know that their enemies will onlyattack one city at a time -- so the troops in a city can be used to defend that city, as well as any of its neighbors. However, if a city can't be defended, then the military command must assume that the troops quartered in that city will be captured, and cannot aid in the defense of Graphia. In the case below, suppose K = 10 . City C might seem well defended, but it will eventually fall. Graphia's leadership wants to identify the Heart of their country -- the largest possible group of cities that can mutually defend each other, even if all of the other cities fall. More formally, a city is defensible if it can draw a total of at least K troops from itself, and from cities directly adjacent to it. A set of cities is defensible if every city in it is defensible, using only troops from itself and adjacent cities in that set. The Heart of the country is the largest possible defensible set of cities - that is, no other defensible set of cities has more cities in it. Input There will be several data sets. Each set begins with two integers, N and K , where N is the number of cities ( 3<=N<=1000 ), and K is the number of troops required to defend a city. The cities are numbered 0 through N - 1 . On the next N lines are descriptions of the cities, starting with city 0. Each of the city description lines begins with an integer T , indicating the number of troops quartered in that city ( 0<=T<=10000 ). This is followed by an integer M , indicating the number of highways going out of that city, and then M integers, indicating the cities those highways go to. No two highways will go from and to the same cities, so every city in each list will be unique. No highway will loop from a city back to the same city. The highways go both ways, so that if city I is in city J 's list, then it's guaranteed that city J will be in city I 's list in the input. The input will end with a line with two space-separated 0's. Output For each data set, print two integers on a single line: The number of cities in the heart of the country, and the number of troops in the heart of the country. Print a space between the integers. There should be no blank lines between outputs. Sample Input 4 900 100 2 1 2 200 2 0 3 500 2 0 3 1000 2 1 2 4 900 100 3 1 2 3 200 3 0 3 2 500 3 1 3 0 1000 3 2 1 0 0 0 Sample Output 3 1700 4 1800
页面置换算法的OPT算法的具体代码解释看不懂,主要问题是 在超出list容量之后的部分,以及LRU算法及其调用的MyStack栈的具体解释?????
``` public class OPT { private final int capacity = 3;// 构造一个初始容量为3的空列表 private int[] index = new int[2];//申请数组下标的容量为2 private List<Integer> list = new ArrayList<Integer>(capacity);//定义一个有界阻塞容器capacity即队列 public OPT(int[] arr) { for (int i = 0; i < arr.length; i++) { if (list.size() < capacity) { // 小于list初始容量 if (!list.contains(arr[i])) { // list没有该页面,将其添加进list尾部 list.add(arr[i]);//列表+1 } else { continue; } } else {// 超出list容量 index[0] = 100; index[1] = 101; if (!list.contains(arr[i])) { // 下一个页面如果不在list中 int a = 0; for (int j = i; j < arr.length; j++) { if (list.contains(arr[j])) { // arr[j]这个页面会在测试数据中会出现较早 if (index[0] != list.indexOf(arr[j])) { //indexOf()的用法:查找arr[j]中,第一次出现指定字符串的位置。 位置不是下标为0 index[a++] = list.indexOf(arr[j]);// 返回此列表中首次出现的指定元素的索引 if (a == 2) { break; } } } } list.set(noExist(), arr[i]);// 置换掉永不使用的,或许在最长时间内不再访问的页面 } else { // 下一个页面在list中 continue;//列表保持不变 } } traverse();//调用traverse函数 } System.out.println("访问页面需从外存调入的次数为:"+(num-1));//计算访问页面需要从外存调入的次数 System.out.println("缺页率为:"+(1-(float)(num-1)/arr.length));//计算缺页率 } ``` [https://blog.csdn.net/AdvancingStone/article/details/79110586]( "这是我的参考代码,我需要的帮助是具体解释OPT和LRU及其调用的MyStack栈的每行代码的具体注释")
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
为啥国人偏爱Mybatis,而老外喜欢Hibernate/JPA呢?
关于SQL和ORM的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行了一番讨论,感触还是有一些,于是就有了今天这篇文。 声明:本文不会下关于Mybatis和JPA两个持久层框架哪个更好这样的结论。只是摆事实,讲道理,所以,请各位看官勿喷。 一、事件起因 关于Mybatis和JPA孰优孰劣的问题,争论已经很多年了。一直也没有结论,毕竟每个人的喜好和习惯是大不相同的。我也看
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
Android 9.0系统新特性,对刘海屏设备进行适配
其实Android 9.0系统已经是去年推出的“老”系统了,这个系统中新增了一个比较重要的特性,就是对刘海屏设备进行了支持。一直以来我也都有打算针对这个新特性好好地写一篇文章,但是为什么直到拖到了Android 10.0系统都发布了才开始写这篇文章呢?当然,一是因为我这段时间确实比较忙,今年几乎绝大部分的业余时间都放到写新书上了。但是最主要的原因并不是这个,而是因为刘海屏设备的适配存在一定的特殊性
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
日均350000亿接入量,腾讯TubeMQ性能超过Kafka
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100) 【导读】近日,腾讯开源动作不断,相继开源了分布式消息中间件TubeMQ,基于最主流的 OpenJDK8开发的
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
相关热词 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件 c#注册dll文件 c#安装.net
立即提问

相似问题