python运行有错误:这是对数据进行分析生成可视化界面的程序(我是小白,请说下解决方法) 40C

运行错误:
C:\Users\Administrator\PycharmProjects\untitled\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/untitled/dianying/src/analysis_data.py
一共有:16590个
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\ADMINI~1\AppData\Local\Temp\jieba.cache
Loading model cost 0.808 seconds.
Prefix dict has been built succesfully.
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled/dianying/src/analysis_data.py", line 252, in
jiebaclearText(content)
File "C:/Users/Administrator/PycharmProjects/untitled/dianying/src/analysis_data.py", line 97, in jiebaclearText
f_stop_text = f_stop.read()
File "D:\python111\lib\codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 3: invalid start byte

Process finished with exit code 1

代码如下:
'''
data : 2019.3.28
goal : 可视化分析获取到的数据
'''
import csv

time = []
nickName = []
gender = []
cityName = []
userLevel = []
score = []
content = ''

读数据

def read_csv():
content = ''
# 读取文件内容
with open(r'D:\maoyan.csv', 'r', encoding='utf_8_sig', newline='') as file_test:
# 读文件
reader = csv.reader(file_test)
i = 0
for row in reader:
if i != 0:
time.append(row[0])
nickName.append(row[1])
gender.append(row[2])
cityName.append(row[3])
userLevel.append(row[4])
score.append(row[5])
content = content + row[6]
# print(row)
i = i + 1
print('一共有:' + str(i - 1) + '个')
return content

import re, jieba

词云生成工具

from wordcloud import WordCloud, ImageColorGenerator

需要对中文进行处理

import matplotlib.font_manager as fm
from pylab import *

mpl.rcParams['font.sans-serif'] = ['SimHei']
from os import path

d = path.dirname(__file__)

stopwords_path = 'D:\ku\chineseStopWords.txt'

评论词云分析

def word_cloud(content):
import jieba, re, numpy
from pyecharts import WordCloud
import pandas as pd

# 去除所有评论里多余的字符
content = content.replace(" ", ",")
content = content.replace(" ", "、")
content = re.sub('[,,。. \r\n]', '', content)

segment = jieba.lcut(content)
words_df = pd.DataFrame({'segment': segment})
# quoting=3 表示stopwords.txt里的内容全部不引用
stopwords = pd.read_csv(stopwords_path, index_col=False, quoting=3, sep="\t", names=['stopword'],
                        encoding='utf-8')
words_df = words_df[~words_df.segment.isin(stopwords.stopword)]
words_stat = words_df.groupby(by=['segment'])['segment'].agg({"计数": numpy.size})
words_stat = words_stat.reset_index().sort_values(by=["计数"], ascending=False)
test = words_stat.head(500).values
codes = [test[i][0] for i in range(0, len(test))]
counts = [test[i][1] for i in range(0, len(test))]
wordcloud = WordCloud(width=1300, height=620)
wordcloud.add("影评词云", codes, counts, word_size_range=[20, 100])
wordcloud.render(d + "\picture\c_wordcloud.html")

定义个函数式用于分词

def jiebaclearText(text):
# 定义一个空的列表,将去除的停用词的分词保存
mywordList = []
text = re.sub('[,,。. \r\n]', '', text)
# 进行分词
seg_list = jieba.cut(text, cut_all=False)
# 将一个generator的内容用/连接
listStr = '/'.join(seg_list)
listStr = listStr.replace("class", "")
listStr = listStr.replace("span", "")
listStr = listStr.replace("悲伤逆流成河", "")
# 打开停用词表
f_stop = open(stopwords_path, encoding="utf8")
# 读取
try:
f_stop_text = f_stop.read()
finally:
f_stop.close() # 关闭资源
# 将停用词格式化,用\n分开,返回一个列表
f_stop_seg_list = f_stop_text.split("\n")
# 对默认模式分词的进行遍历,去除停用词
for myword in listStr.split('/'):
# 去除停用词
if not (myword.split()) in f_stop_seg_list and len(myword.strip()) > 1:
mywordList.append(myword)
return ' '.join(mywordList)

生成词云图

def make_wordcloud(text1):
text1 = text1.replace("悲伤逆流成河", "")
bg = plt.imread(d + "/static/znn1.jpg")
# 生成
wc = WordCloud( # FFFAE3
background_color="white", # 设置背景为白色,默认为黑色
width=890, # 设置图片的宽度
height=600, # 设置图片的高度
mask=bg,
# margin=10, # 设置图片的边缘
max_font_size=150, # 显示的最大的字体大小
random_state=50, # 为每个单词返回一个PIL颜色
font_path=d + '/static/simkai.ttf' # 中文处理,用系统自带的字体
).generate_from_text(text1)
# 为图片设置字体
my_font = fm.FontProperties(fname=d + '/static/simkai.ttf')
# 图片背景
bg_color = ImageColorGenerator(bg)
# 开始画图
plt.imshow(wc.recolor(color_func=bg_color))
# 为云图去掉坐标轴
plt.axis("off")
# 画云图,显示
# 保存云图
wc.to_file(d + r"/picture/word_cloud.png")

评论者性别分布可视化

def sex_distribution(gender):
# print(gender)
from pyecharts import Pie
list_num = []
list_num.append(gender.count('0')) # 未知
list_num.append(gender.count('1')) # 男
list_num.append(gender.count('2')) # 女
attr = ["其他", "男", "女"]
pie = Pie("性别饼图")
pie.add("", attr, list_num, is_label_show=True)
pie.render(d + r"\picture\sex_pie.html")

评论者所在城市分布可视化

def city_distribution(cityName):
city_list = list(set(cityName))
city_dict = {city_list[i]: 0 for i in range(len(city_list))}
for i in range(len(city_list)):
city_dict[city_list[i]] = cityName.count(city_list[i])
# 根据数量(字典的键值)排序
sort_dict = sorted(city_dict.items(), key=lambda d: d[1], reverse=True)
city_name = []
city_num = []
for i in range(len(sort_dict)):
city_name.append(sort_dict[i][0])
city_num.append(sort_dict[i][1])

import random
from pyecharts import Bar
bar = Bar("评论者城市分布")
bar.add("", city_name, city_num, is_label_show=True, is_datazoom_show=True)
bar.render(d + r"\picture\city_bar.html")

每日评论总数可视化分析

def time_num_visualization(time):
from pyecharts import Line
time_list = list(set(time))
time_dict = {time_list[i]: 0 for i in range(len(time_list))}
time_num = []
for i in range(len(time_list)):
time_dict[time_list[i]] = time.count(time_list[i])
# 根据数量(字典的键值)排序
sort_dict = sorted(time_dict.items(), key=lambda d: d[0], reverse=False)
time_name = []
time_num = []
print(sort_dict)
for i in range(len(sort_dict)):
time_name.append(sort_dict[i][0])
time_num.append(sort_dict[i][1])

line = Line("评论数量日期折线图")
line.add(
    "日期-评论数",
    time_name,
    time_num,
    is_fill=True,
    area_color="#000",
    area_opacity=0.3,
    is_smooth=True,
)
line.render(d + r"\picture\c_num_line.html")

评论者猫眼等级、评分可视化

def level_score_visualization(userLevel, score):
from pyecharts import Pie
userLevel_list = list(set(userLevel))
userLevel_num = []
for i in range(len(userLevel_list)):
userLevel_num.append(userLevel.count(userLevel_list[i]))

score_list = list(set(score))
score_num = []
for i in range(len(score_list)):
    score_num.append(score.count(score_list[i]))

pie01 = Pie("等级环状饼图", title_pos='center', width=900)
pie01.add(
    "等级",
    userLevel_list,
    userLevel_num,
    radius=[40, 75],
    label_text_color=None,
    is_label_show=True,
    legend_orient="vertical",
    legend_pos="left",
)
pie01.render(d + r"\picture\level_pie.html")
pie02 = Pie("评分玫瑰饼图", title_pos='center', width=900)
pie02.add(
    "评分",
    score_list,
    score_num,
    center=[50, 50],
    is_random=True,
    radius=[30, 75],
    rosetype="area",
    is_legend_show=False,
    is_label_show=True,
)
pie02.render(d + r"\picture\score_pie.html")

time = []
nickName = []
gender = []
cityName = []
userLevel = []
score = []
content = ''
content = read_csv()

1 词云

jiebaclearText(content)
make_wordcloud(content)

pyecharts词云

word_cloud(content)

2 性别分布

sex_distribution(gender)

3 城市分布

city_distribution(cityName)

4 评论数

time_num_visualization(time)

5 等级,评分

level_score_visualization(userLevel, score)

1个回答

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 0

Python 编码中编码解码的问题,我这个错误就是‘utf-8’不能解码位置0的那个字节(0xa1),也就是这个字节超出了utf-8的表示范围了

解决办法:

with open(r'D:\maoyan.csv', 'r', encoding='utf_8_sig', newline='') as file_test:

修改:**with open(r'D:\maoyan.csv', 'r', encoding='utf-8', newline='') as file_test:**

也就是在读取数据的时候,显式添加编码方式encoding='utf_8',别的编码也可以试试哟。如:gb18030

zhuzhuzhanshi
zhuzhuzhanshi 还是不行 依然还是那个错误
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
如何将python的得到的数据实时可视化 就像是心点图那样

`` ``` ````import psutil import time while True: a=psutil.cpu_percent(None) print("cpu的利用率为:",a) time.sleep(1) ``` 怎么才能把这个生成的数据做一个类似心电图的玩意

Python绘制词频统计图,怎么输出到GUI,而不是输出到控制台?

# -*- coding: utf-8 -*- from tkinter import * import tkinter import hashlib import time import codecs import codecs import matplotlib.pyplot as plt from pylab import mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 LOG_LINE_NUM = 0 class MY_GUI(): def __init__(self,init_window_name): self.init_window_name = init_window_name #设置窗口 def set_init_window(self): self.init_window_name.title("维吉尼亚密码工具") #窗口名 self.init_window_name.geometry('320x160+10+10') #290 160为窗口大小,+10 +10 定义窗口弹出时的默认展示位置 self.init_window_name.geometry('1000x680+10+10') self.init_window_name["bg"] = "white" #窗口背景色,其他背景色见:blog.csdn.net/chl0000/article/details/7657887 self.init_window_name.attributes("-alpha",1.0) #虚化,值越小虚化程度越高 self.init_data_label = Label(self.init_window_name, text="待处理数据") self.init_data_label.grid(row=0, column=0) self.result_data_label = Label(self.init_window_name, text="输出结果") self.result_data_label.grid(row=0, column=15) self.init_key_label = Label(self.init_window_name, text="密钥") self.init_key_label.grid(row=0, column=10) self.log_label = Label(self.init_window_name, text="日志") self.log_label.grid(row=12, column=0) self.init_data_Text = Text(self.init_window_name, width=50, height=35) # 原始数据录入框 self.init_data_Text.grid(row=1, column=0, rowspan=10, columnspan=10) self.result_data_Text = Text(self.init_window_name, width=35, height=49) # 处理结果展示 self.result_data_Text.grid(row=1, column=12, rowspan=15, columnspan=10) self.key_Text = Text(self.init_window_name, width=5, height=1) # 密钥框 self.key_Text.grid(row=1, column=6, rowspan=1,columnspan=10) self.log_data_Text = Text(self.init_window_name, width=66, height=9) # 日志框 self.log_data_Text.grid(row=13, column=0, columnspan=10) #按钮 self.str_transtoencrypt_button = Button(self.init_window_name, text="加密", bg="lightblue", width=10,command=self.str_transtoencrypt) # 调用内部方法 加()为直接调用 self.str_transtoencrypt_button.grid(row=3, column=11) self.str_transtodecrypt_button = Button(self.init_window_name, text="解密", bg="lightblue", width=10,command=self.str_transtodecrypt) # 调用内部方法 加()为直接调用 self.str_transtodecrypt_button.grid(row=5, column=11) self.str_count_button = Button(self.init_window_name, text="词频统计", bg="lightblue", width=10,command=self.str_count) # 调用内部方法 加()为直接调用 self.str_count_button.grid(row=7, column=11) #功能算法的实现 #加密算法 def str_transtoencrypt(self): letter_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; src = self.init_data_Text.get(1.0,END).strip().replace("\n","") #获得输入的字符 key = self.key_Text.get(1.0, END).strip().replace("\n", "") #获得输入的密钥 a=[] for ch in key: a.append(ord(ch.upper())-65) #ord()函数返回ASCii值 upper()将小写转大写Python 列表 append() 方法用于在列表末尾追加新的对象。 get_list = a ciphertext = ''; i = 0 for ch in src: # 遍历明文 if i % len(get_list) == 0: i = 0 if ch.isupper(): # isupper函数检测字符串中是否都是大写字母 ciphertext += letter_list[(ord(ch) - 65 + get_list[i]) % 26] i += 1 else: ciphertext += letter_list[(ord(ch) - 97 + get_list[i]) % 26].lower() i += 1 self.result_data_Text.delete(1.0, END) self.result_data_Text.insert(1.0, ciphertext) #解密算法 def str_transtodecrypt(self): letter_list = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; src = self.init_data_Text.get(1.0, END).strip().replace("\n", "") # 获得输入的字符 key = self.key_Text.get(1.0, END).strip().replace("\n", "") # 获得输入的密钥 a=[] for ch in key: a.append(ord(ch.upper())-65) #ord()函数返回ASCii值 upper()将小写转大写Python 列表 append() 方法用于在列表末尾追加新的对象。 get_list = a ciphertext = ''; i = 0 plaintext=''; i = 0 for ch in src: #遍历密文 if i%len(get_list)==0: i=0 #判断是否是大写 if ch.isupper(): plaintext+=letter_list[(ord(ch)-65-get_list[i]) % 26] i+=1 else: plaintext+=letter_list[(ord(ch)-97-get_list[i]) % 26].lower() i+=1 self.result_data_Text.delete(1.0, END) self.result_data_Text.insert(1.0, plaintext) #词频统计及统计图 def str_count(self): top = Toplevel() top.title('词频统计结果') top.geometry('1000x1000') fr =self.init_data_Text.get(1.0,END).strip().replace("\n","") word = [] counter = {} for line in fr: line = line.strip() if len(line) == 0: continue for w in line: if not w in word: word.append(w) if not w in counter: counter[w] = 0 else: counter[w] += 1 counter_list = sorted(counter.items(), key=lambda x: x[1], reverse=True) print(counter_list[:50]) label = list(map(lambda x: x[0], counter_list[:50])) value = list(map(lambda y: y[1], counter_list[:50])) plt.bar(range(len(value)), value, tick_label=label) plt.show() def gui_start(): init_window = Tk() #实例化出一个父窗口 RMC_PORTAL = MY_GUI(init_window) # 设置根窗口默认属性 RMC_PORTAL.set_init_window() init_window.mainloop() #父窗口进入事件循环,可以理解为保持窗口运行,否则界面不展示 gui_start() ``` ``` ![如图,点击词频统计按钮后,统计图出现在IDE中,同时生成一个空白窗口图片说明](https://img-ask.csdn.net/upload/201810/12/1539334357_812708.jpg)

课程设计 迷宫 求大神作 【可视化界面设计 】 万分感谢!!!!!!!!!!!

#include <stdio.h> #include <stdlib.h> typedef struct { int x,y; }p; typedef struct { int ord; p seat; int di; }node; typedef struct { node *base,*top; int stacksize; }sqstack; int initstack(sqstack &s) //创建栈 { s.base=(node *)malloc(100*sizeof(node)); if(!s.base) exit(-1); s.top=s.base; s.stacksize=100; return 1; } void push(sqstack &s,node e) //压栈 { if(s.top-s.base>=s.stacksize) s.base=(node *)realloc(s.base,(s.stacksize+100)*sizeof(node)); if(!s.base) exit(-1); *s.top++=e; } void pop(sqstack &s,node &e) //出栈 { if(s.top==s.base) return; e=*--s.top; } node gettop(sqstack s,node &e) //得到栈顶元素 { e=*(s.top-1); return e; } int stackempty(sqstack s) //判断栈是否为空 {return s.top==s.base;} int pass(int **maze,p pos) // 判断是否能够通过 { if(maze[pos.x][pos.y]==0) return 1; return 0; } void footprint(int **maze,p pos) { maze[pos.x ][pos.y ]=8; } void markprint(int **maze,p pos) { maze[pos.x ][pos.y ]=4; } void printffrombase(sqstack &s,int **maze,int row,int line) //从栈底输出路径 { int i,j; node *l; l=s.base; printf("\n迷宫显示的路径:\n"); for(i=0;i<row+2;i++) //输出迷宫图 { for(j=0;j<line+2;j++) { if(maze[i][j]==1) printf("■ "); if(maze[i][j]==0) printf("□ "); if((maze[i][j]!=1)&&(maze[i][j]!=0)) printf(" %d ",maze[i][j]); } printf("\n"); } printf("走出迷宫的路径:\n"); while(l!=s.top) //输出路径 { printf("<%d,%d>",l->seat.x,l->seat.y); printf("->"); l++; } printf("成功走出\n"); printf("\n***在迷宫中每一位置按右、上、左、下判断能否通过***\n"); printf("\n***迷宫中8表示走过的路径,4表示的是走过的错误路径***\n"); } p nextpos(p curpos,int di) { /* if(di==1) { curpos.y=curpos.y+1; //向右 } if(di==2) { curpos.x=curpos.x-1; //向上 } if(di==3) { curpos.y=curpos.y-1; //向左 } if(di==4) { curpos.x=curpos.x+1; //向下 }*/ switch(di){ case 1: curpos.y=curpos.y+1;break; case 2: curpos.x=curpos.x-1;break; case 3: curpos.y=curpos.y-1;break; case 4: curpos.x=curpos.x+1;break; } return curpos; } int main() //构建和初始化迷宫 { int **maze=NULL; int i,row,line; int j,choice; printf("请输入序号选择产生迷宫的类型【1.随机产生 2.规定数组产生】\n"); scanf("%d",&choice); printf("自动生成迷宫四周墙壁\n"); printf("请输入迷宫的行和列(x y):\n"); scanf("%d %d",&row,&line); //输入迷宫的行和列 printf("***实心方块为墙壁,空心方块为路***\n"); maze=(int **)malloc((row+2)*sizeof(int *)); for(i=0;i<row+2;i++) maze[i]=(int *)malloc((line+2)*sizeof(int)); if(choice==1) { for(i=1;i<=row;i++) for(j=1;j<=line;j++) maze[i][j]=rand()%2; printf("********************************\n"); printf("********自动生成迷宫如下********\n"); printf("********************************\n"); for(i=0;i<line+2;i++) // maze[0][i]=1; for(i=0;i<line+2;i++) // maze[row+1][i]=1; for(i=0;i<row+2;i++) // maze[i][0]=1; for(i=0;i<row+2;i++) // 生成四周墙壁 maze[i][line+1]=1; printf(" "); for(j=0;j<line+2;j++) // 迷宫每一列序号 printf(" %d ",j); printf("\n"); for(i=0;i<row+2;i++) //输出迷宫 { printf("%d ",i); // 迷宫每一行序号 for(j=0;j<line+2;j++) { if(maze[i][j]==1) printf("■ "); else printf("□ "); } printf("\n"); } printf("********************************\n"); printf("********************************\n"); } else { printf("请输入迷宫:\n"); int temp; for (i=1;i<=row;i++) { for(int j=1;j<=line;j++) { scanf("%d",&temp); maze[i][j]=temp; } } printf("************************\n"); printf("****规定数组产生迷宫****\n"); printf("************************\n"); for(i=0;i<line+2;i++) maze[0][i]=1; for(i=0;i<line+2;i++) maze[row+1][i]=1; for(i=0;i<row+2;i++) maze[i][0]=1; for(i=0;i<row+2;i++) maze[i][line+1]=1; printf(" "); for(j=0;j<line+2;j++) // 迷宫每一列序号 printf(" %d ",j); printf("\n"); for(i=0;i<row+2;i++) //输出迷宫 { printf(" %d ",i); for(j=0;j<line+2;j++) { if(maze[i][j]==1) printf("■ "); else printf("□ "); } printf("\n"); } printf("************************\n"); printf("************************\n"); } printf("\n"); int a,b,c,d; //curstep=1; p start,end,curpos; printf("***迷宫的起点和终点不能为墙壁***\n\n"); printf("请输入起点坐标:\n"); scanf("%d %d",&a,&b); printf("请输入终点坐标:\n"); scanf("%d %d",&c,&d); start.x=a,start.y=b; end.x=c,end.y=d; sqstack stack; initstack(stack); curpos=start; if(maze[start.x][start.y]==1 ||maze[end.x][end.y]==1) { printf("\n***此迷宫无解***\n"); return 1; } do { if(pass(maze,curpos)) { footprint(maze,curpos); node e; // e.ord=curstep; e.seat=curpos; e.di=1; push(stack,e); if(curpos.x==end.x&&curpos.y==end.y) //判断是否为终点 { printffrombase(stack,maze,row,line); return 0; } curpos=nextpos(curpos,1); // curstep++; }//if pass else { if(!stackempty(stack)) { node e; pop(stack,e); while(e.di==4 && !stackempty(stack)) { markprint(maze,e.seat); pop(stack,e); }//while if(e.di<4) { e.di++; push(stack,e); curpos=nextpos(e.seat,e.di); }//if }//if if(stackempty(stack)) { printf("\n***此迷宫无解***\n"); return 1; } }//else }while(!stackempty(stack)); return 0; }

用matplotlib生成好的图表怎么用pyqt5显示在界面上?

我已经用python3写好了调用matplotlib生成的数据图表,现在想做一个界面,在界面里的某一个位置显示这张图,在网上看了很多matplotlib跟pyqt5关联的例子,自己尝试都没有显示成功,求大神指点

vs2017在python开发环境下的项目创建?

创建完了项目,在交互界面可以成功的import cv2 ,import tensorflow这些操作 可以在我新建的python文件中,创建运行,却说我没有指定启动文件,希望知道的能够详细的解答下,谢谢啦![图片说明](https://img-ask.csdn.net/upload/201806/14/1528938355_891452.jpg)

求助基于Ean-13 用C#开发条形码生成与识别方法

各位大神 新人求助基于Ean-13 用C#开发条形码生成与识别方法 最好可以给个见习方式深入探讨!!!

pycharm执行图形程序不出现图形界面

pycharm执行图形程序不出现图形界面,只出现Process finished with exit code 0,之前还是能 显示出图形的,为什么突然不好用了?

有关后端数据在前端展示的问题

``` https://www.cnblogs.com/neal-ke/p/8746163.html 上面是博客园一篇文章的地址,采用的是 域名/用户名/p/文章id.html 的格式(我猜的) ``` 1,我想问问这种技术是如何实现的? 2,是不是用户注册成功就会生成一个该用户的文件夹,以后用户提交的文章,都会生成一个html文件保存在该文件夹下? 3,用户访问到html界面并不是单纯的包含文章内容,还有导航栏,标签,...,是咋整的?是用jsp动态生成的吗?那html的名字是如何生成的呢? 4,嗯,有点乱 5,各位大哥,多担待,拜谢

编译原理课设,老师要求写一个简单的编译器

编译原理课设,老师要求写一个简单的编译器,求助,不知道怎么入手。

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

springboot+jwt实现token登陆权限认证

一 前言 此篇文章的内容也是学习不久,终于到周末有时间码一篇文章分享知识追寻者的粉丝们,学完本篇文章,读者将对token类的登陆认证流程有个全面的了解,可以动态搭建自己的登陆认证过程;对小项目而已是个轻量级的认证机制,符合开发需求;更多精彩原创内容关注公主号知识追寻者,读者的肯定,就是对作者的创作的最大支持; 二 jwt实现登陆认证流程 用户使用账号和面发出post请求 服务器接受到请求后使用私...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

程序员写出这样的代码,能不挨骂吗?

当你换槽填坑时,面对一个新的环境。能够快速熟练,上手实现业务需求是关键。但是,哪些因素会影响你快速上手呢?是原有代码写的不够好?还是注释写的不够好?昨夜...

外包程序员的幸福生活

今天给你们讲述一个外包程序员的幸福生活。男主是Z哥,不是在外包公司上班的那种,是一名自由职业者,接外包项目自己干。接下来讲的都是真人真事。 先给大家介绍一下男主,Z哥,老程序员,是我十多年前的老同事,技术大牛,当过CTO,也创过业。因为我俩都爱好喝酒、踢球,再加上住的距离不算远,所以一直也断断续续的联系着,我对Z哥的状况也有大概了解。 Z哥几年前创业失败,后来他开始干起了外包,利用自己的技术能...

优雅的替换if-else语句

场景 日常开发,if-else语句写的不少吧??当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势:干掉过多的if-else!!!本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 采用策略模式+工厂模式; 结合注解,锦...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

为什么你不想学习?只想玩?人是如何一步一步废掉的

不知道是不是只有我这样子,还是你们也有过类似的经历。 上学的时候总有很多光辉历史,学年名列前茅,或者单科目大佬,但是虽然慢慢地长大了,你开始懈怠了,开始废掉了。。。 什么?你说不知道具体的情况是怎么样的? 我来告诉你: 你常常潜意识里或者心理觉得,自己真正的生活或者奋斗还没有开始。总是幻想着自己还拥有大把时间,还有无限的可能,自己还能逆风翻盘,只不是自己还没开始罢了,自己以后肯定会变得特别厉害...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

早上躺尸,晚上干活:硅谷科技公司这么流行迟到?

硅谷科技公司上班时间OPEN早已不是什么新鲜事,早九晚五是常态,但有很多企业由于不打卡,员工们10点、11点才“姗姗来迟”的情况也屡见不鲜。 这种灵活的考勤制度为人羡慕,甚至近年来,国内某些互联网企业也纷纷效仿。不过,硅谷普遍弹性的上班制度是怎么由来的呢?这种“流行性迟到”真的有那么轻松、悠哉吗? 《动态规划专题班》 课程试听内容: 动态规划的解题要领 动态规划三大类 求最值/计数/可行性 常...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

Python爬虫,高清美图我全都要(彼岸桌面壁纸)

爬取彼岸桌面网站较为简单,用到了requests、lxml、Beautiful Soup4

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

大胆预测下未来5年的Web开发

在2019年的ReactiveConf 上,《Elm in Action》的作者Richard Feldman对未来5年Web开发的发展做了预测,很有意思,分享给大家。如果你有机会从头...

大牛都会用的IDEA调试技巧!!!

导读 前天面试了一个985高校的实习生,问了他平时用什么开发工具,他想也没想的说IDEA,于是我抛砖引玉的问了一下IDEA的调试用过吧,你说说怎么设置断点...

都前后端分离了,咱就别做页面跳转了!统统 JSON 交互

文章目录1. 无状态登录1.1 什么是有状态1.2 什么是无状态1.3 如何实现无状态1.4 各自优缺点2. 登录交互2.1 前后端分离的数据交互2.2 登录成功2.3 登录失败3. 未认证处理方案4. 注销登录 这是本系列的第四篇,有小伙伴找不到之前文章,松哥给大家列一个索引出来: 挖一个大坑,Spring Security 开搞! 松哥手把手带你入门 Spring Security,别再问密...

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

C 语言编程 — 堆栈与内存管理

目录 文章目录目录前文列表堆、栈内存管理动态分配内存重新调整内存的大小和释放内存 前文列表 《程序编译流程与 GCC 编译器》 《C 语言编程 — 基本语法》 《C 语言编程 — 基本数据类型》 《C 语言编程 — 变量与常量》 《C 语言编程 — 运算符》 《C 语言编程 — 逻辑控制语句》 《C 语言编程 — 函数》 《C 语言编程 — 高级数据类型 — 指针》 《C 语言编程 — 高级数据类...

计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年5月份最新版)

男怕选错语言,女怕嫁错情郎。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

2020春招面试了10多家大厂,我把问烂了的数据库事务知识点总结了一下

2020年截止目前,我面试了阿里巴巴、腾讯、美团、拼多多、京东、快手等互联网大厂。我发现数据库事务在面试中出现的次数非常多。

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

前端还能这么玩?(女朋友生日,用前端写了一个好玩的送给了她,高兴坏了)

立即提问
相关内容推荐