Tensorflow利用自制的数据集做图像识别,程序卡在读取tfrecord文件不跑 40C

我利用自己的图片做了一个数据集训练神经网络,在feed数据的时候数据类型不合适,加了session.run()程序就卡在这里不动了,下面贴出代码,跪求大神指导。
程序卡在print(“begin4”)和print(“begin5”)之间

 import tensorflow as tf
from encode_to_tfrecords import create_record, create_test_record,  read_and_decode, get_batch, get_test_batch

n_input = 154587
n_classes = 3
dropout = 0.5
x = tf.placeholder(tf.float32, [None, n_input])
y = tf.placeholder(tf.int32, [None, n_classes])
keep_drop = tf.placeholder(tf.float32)

class network(object):

    def inference(self, images,keep_drop):
    ####################################################################################################################
        # 向量转为矩阵

        #  images = tf.reshape(images, shape=[-1, 39,39, 3])

        images = tf.reshape(images, shape=[-1, 227, 227, 3])  # [batch, in_height, in_width, in_channels]

        images = (tf.cast(images, tf.float32) / 255. - 0.5) * 2  # 归一化处理
    ####################################################################################################################

        # 第一层  定义卷积偏置和下采样

        conv1 = tf.nn.bias_add(tf.nn.conv2d(images, self.weights['conv1'], strides=[1, 4, 4, 1], padding='VALID'),
                               self.biases['conv1'])

        relu1 = tf.nn.relu(conv1)

        pool1 = tf.nn.max_pool(relu1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='VALID')

        # 第二层

        conv2 = tf.nn.bias_add(tf.nn.conv2d(pool1, self.weights['conv2'], strides=[1, 1, 1, 1], padding='SAME'),
                               self.biases['conv2'])

        relu2 = tf.nn.relu(conv2)

        pool2 = tf.nn.max_pool(relu2, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='VALID')

        # 第三层

        conv3 = tf.nn.bias_add(tf.nn.conv2d(pool2, self.weights['conv3'], strides=[1, 1, 1, 1], padding='SAME'),
                               self.biases['conv3'])

        relu3 = tf.nn.relu(conv3)

        #  pool3=tf.nn.max_pool(relu3, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='VALID')

        conv4 = tf.nn.bias_add(tf.nn.conv2d(relu3, self.weights['conv4'], strides=[1, 1, 1, 1], padding='SAME'),
                               self.biases['conv4'])

        relu4 = tf.nn.relu(conv4)

        conv5 = tf.nn.bias_add(tf.nn.conv2d(relu4, self.weights['conv5'], strides=[1, 1, 1, 1], padding='SAME'),
                               self.biases['conv5'])

        relu5 = tf.nn.relu(conv5)

        pool5 = tf.nn.max_pool(relu5, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='VALID')

        # 全连接层1,先把特征图转为向量

        flatten = tf.reshape(pool5, [-1, self.weights['fc1'].get_shape().as_list()[0]])
        # dropout比率选用0.5

        drop1 = tf.nn.dropout(flatten, keep_drop)

        fc1 = tf.matmul(drop1, self.weights['fc1']) + self.biases['fc1']

        fc_relu1 = tf.nn.relu(fc1)

        fc2 = tf.matmul(fc_relu1, self.weights['fc2']) + self.biases['fc2']

        fc_relu2 = tf.nn.relu(fc2)

        fc3 = tf.matmul(fc_relu2, self.weights['fc3']) + self.biases['fc3']

        return fc3

    def __init__(self):
        # 初始化权值和偏置

        with tf.variable_scope("weights"):
            self.weights = {

                # 39*39*3->36*36*20->18*18*20

                'conv1': tf.get_variable('conv1', [11, 11, 3, 96],
                                         initializer=tf.contrib.layers.xavier_initializer_conv2d()),

                # 18*18*20->16*16*40->8*8*40

                'conv2': tf.get_variable('conv2', [5, 5, 96, 256],
                                         initializer=tf.contrib.layers.xavier_initializer_conv2d()),

                # 8*8*40->6*6*60->3*3*60

                'conv3': tf.get_variable('conv3', [3, 3, 256, 384],
                                         initializer=tf.contrib.layers.xavier_initializer_conv2d()),

                # 3*3*60->120

                'conv4': tf.get_variable('conv4', [3, 3, 384, 384],
                                         initializer=tf.contrib.layers.xavier_initializer_conv2d()),

                'conv5': tf.get_variable('conv5', [3, 3, 384, 256],
                                         initializer=tf.contrib.layers.xavier_initializer_conv2d()),

                'fc1': tf.get_variable('fc1', [6 * 6 * 256, 4096], initializer=tf.contrib.layers.xavier_initializer()),

                'fc2': tf.get_variable('fc2', [4096, 4096], initializer=tf.contrib.layers.xavier_initializer()),

                'fc3': tf.get_variable('fc3', [4096, 1000], initializer=tf.contrib.layers.xavier_initializer()),

            }

        with tf.variable_scope("biases"):
            self.biases = {

                'conv1': tf.get_variable('conv1', [96, ],
                                         initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

                'conv2': tf.get_variable('conv2', [256, ],
                                         initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

                'conv3': tf.get_variable('conv3', [384, ],
                                         initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

                'conv4': tf.get_variable('conv4', [384, ],
                                         initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

                'conv5': tf.get_variable('conv5', [256, ],
                                         initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

                'fc1': tf.get_variable('fc1', [4096, ],
                                       initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

                'fc2': tf.get_variable('fc2', [4096, ],
                                       initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

                'fc3': tf.get_variable('fc3', [1000, ], initializer=tf.constant_initializer(value=0.1, dtype=tf.float32))

            }

    # 计算softmax交叉熵损失函数

    def sorfmax_loss(self, predicts, labels):
        predicts = tf.nn.softmax(predicts)

        labels = tf.one_hot(labels, self.weights['fc3'].get_shape().as_list()[1])

        loss = tf.nn.softmax_cross_entropy_with_logits(logits=predicts, labels=labels)

        #  loss =-tf.reduce_mean(labels * tf.log(predicts))# tf.nn.softmax_cross_entropy_with_logits(predicts, labels)

        self.cost = loss

        return self.cost

        # 梯度下降

    def optimer(self, loss, lr=0.01):
        train_optimizer = tf.train.GradientDescentOptimizer(lr).minimize(loss)

        return train_optimizer

        #定义训练
    # def train(self):
create_record('/Users/hanjiarong/Documents/testdata/tfrtrain')
# image, label = read_and_decode('train.tfrecords')
# batch_image, batch_label = get_batch(image, label, 30)

#连接网络 网络训练
net = network()
inf = net.inference(x, dropout)
loss = net.sorfmax_loss(inf,y)
opti = net.optimer(loss)
correct_pred = tf.equal(tf.argmax(inf, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))

# #定义测试
create_test_record('/Users/hanjiarong/Documents/testdata/tfrtest')
# image_t, label_t = read_and_decode('test.tfrecords')
# batch_test_image, batch_test_label = get_test_batch(image_t, label_t, 50)
#
# #生成测试


init = tf.initialize_all_variables()
with tf.Session() as session:
    session.run(init)
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)
    max_iter = 100000
    iter = 1
    print("begin1")
    while iter * 30 < max_iter:
        print("begin2")
        image, label = read_and_decode('train.tfrecords')
        print("begin3")
        batch_image, batch_label = get_batch(image, label, 1)
        print("begin4")
        batch_image = session.run(batch_image)
        batch_label = session.run(batch_label)
        print("begin5")
        # loss_np, _, label_np, image_np, inf_np = session.run([loss, opti, batch_label, batch_image, inf])
        session.run(opti, feed_dict={x: batch_image, y: batch_label, keep_drop: dropout})
        print("begin6")
        if iter % 10 == 0:
            loss, acc = session.run([loss, accuracy], feed_dict={x: batch_image, y: batch_label, keep_drop: 1.})
            print("Iter " + str(iter * 30) + ", Minibatch Loss= " + \
                  "{:.6f}".format(loss) + ", Training Accuracy= " + "{:.5f}".format(acc))
        iter += 1
        print("Optimization Finished!")
        image, label = read_and_decode('test.tfrecords')
        batch_test_image, batch_test_label = get_batch(image, label, 2)
        img_test, lab_test = session.run([batch_test_image, batch_test_label])
        test_accuracy = session.run(accuracy,
                                    feed_dict={x: img_test, y: lab_test, keep_drop: 1.})
        print("Testing Accuracy:", test_accuracy)
















4个回答

Tensorflow中文社区测试版已经开放了,你可以去看,希望你能找到答案!

也许可以使用.pkl文件试试?

我原来做的,直接读取TFRecord文件里的数据image,label作为输入,也卡在那了,,解决的话就是把读出的文件在处理一遍,tf.train.slice_input_producer([image, label])然后生成batch,image_batch, label_batch = tf.train.batch([image, label],
batch_size= batch_size,然后就可以跑了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在windows下生成tfrecords,拷贝到linux后变成了stl 3d类型的文件导致程序读取报错?
问题描述: 在自己电脑(windows系统)上写了程序生成自己的tfrecords数据集,然后拷贝到工作用的电脑在linux系统下进行模型训练。之前一直没问题,直到最近新生成了一批数据集拷贝到工作电脑上使用时,程序突然报错。OutOfRangeError (see above for traceback): RandomShuffleQueue '_1_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested 32, current size 0)[[node shuffle_batch (defined at C:/Users/Administrator/.PyCharmCE2018.3/config/scratches/123.py:40) ]] 通过查找论坛博客的方法,调整读取模块,最终还是没能解决。 试了试读取以前的数据集,发现程序又毫无问题。这时注意到在linux系统里以前的tfrecords数据集的属性里写的是类型:二进制,但是新的tfrecords数据集却是STL 3D模型(二进制)。 生成数据集的程序一直都没改过,为何现在数据集到了linux系统类型就变了? 我也尝试了在windows下读取新的数据集,结果显示能够正常读取。。
想要实现自制的音乐播放器读取本地音乐然后播放应该怎么做
目前是使用一个数组来存放歌曲。![图片说明](https://img-ask.csdn.net/upload/202002/10/1581325844_356959.png) 想要实现类似图片的这种功能要怎么做
matlab 灰度图 画一张背景是黑色的,然后将读取的数据超过均值后用其他颜色显示在灰度图上
matlab 灰度图 画一张背景是黑色的,然后将读取的数据超过均值后用其他颜色显示在灰度图上,就像下面的这张图,求有过年在家的大神jie'jiu ![图片说明](https://img-ask.csdn.net/upload/202001/30/1580389210_62466.png)
TensorFlow报错:Shape (44, ?) must have rank at least 3 ?
用TensorFlow执行RNN,报错ValueError: Shape (44, ?) must have rank at least 3,下面是程序的部分代码,请问应该在哪里修改下?谢谢 解析函数: ``` feature = ['feature1',......,'feature44'] label = 'label2' featureNames = list(feature) featureNames.append(label) columns = [tf.FixedLenFeature(shape=[1], dtype=tf.float32) for k in featureNames] featuresDict = dict(zip(featureNames, columns)) def parse_tfrecord(example_proto): parsed_features = tf.parse_single_example(example_proto, featuresDict) labels = parsed_features.pop(label) return parsed_features, tf.cast(labels, tf.int32) ``` 输入函数(原始数据是有44个特征值的数值序列,每个序列为一样本): ``` def tfrecord_input_fn(fileName,numEpochs=None,shuffle=True,batchSize=None): #读取tfrecord数据 dataset = tf.data.TFRecordDataset(fileName, compression_type='GZIP') #执行解析函数 dataset = dataset.map(parse_tfrecord) #打乱数据 if shuffle: dataset = dataset.shuffle(buffer_size=batchSize * 100*numEpochs) #每32个样本作为一个batch dataset = dataset.batch(32) #重复数据 dataset = dataset.repeat(numEpochs) print('features:',features) print('labels:',labels) iterator = dataset.make_one_shot_iterator() features, labels = iterator.get_next() return features, labels ``` 打印返回值结果: ``` features: {'feature1': <tf.Tensor 'IteratorGetNext_21:0' shape=(?, 1) dtype=float32>, 'feature2': <tf.Tensor 'IteratorGetNext_21:1' shape=(?, 1) dtype=float32>,......, 'feature44': <tf.Tensor 'IteratorGetNext_21:43' shape=(?, 1) dtype=float32>} labels: Tensor("IteratorGetNext_21:44", shape=(?, 1), dtype=int32) ``` 执行网络后报错: ``` ValueError: Shape (44, ?) must have rank at least 3 ```
halcon与mfc混合编程中怎样在picture control中显示不同的图片?还有图片被halcon处理后,显示结束后,如何清空窗口。
使用halcon将图片读取,并显示在picture control上后再次读取第二张图片时仍然显示第一张图片 void Ct5Dlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 CString path; CString filter; filter = "Picture Files (*.bmp *.jpg)|*bmp;;*jpg||"; CFileDialog readfileDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter);//构造文件对话框对象 if (IDOK == readfileDlg.DoModal()) //当点击确定按钮时候,会记录文件路径 { path = readfileDlg.GetPathName(); } else { return; } //通过readfileDlg.GetPathName()获得的文件路径是CString类型,而Halcon中的read_image需要的类型为HTuple涉及到数据转换 CStringA StrTemp(path); hv_picfile = (LPSTR)StrTemp.GetBuffer(); ReadImage(&ho_Image, hv_picfile); //读取文件 HWND hwnd1; CRect rect; GetDlgItem(IDC_PIC)->GetWindowRect(&rect); //获取控件尺寸 hwnd1 = GetDlgItem(IDC_PIC)->m_hWnd; //HLONG lWWindowID=(HLONG)m_hWnd; LONG lWindowID = (LONG)hwnd1; OpenWindow(0, 0, rect.Width(), rect.Height(), lWindowID, "", "", &hv_WindowHandle); HDevWindowStack::Push(hv_WindowHandle); if (HDevWindowStack::IsOpen()) DispObj(ho_Image, HDevWindowStack::GetActive()); } ``` ```
单纯的 ajax提交表单数据servlet直接响应 并跳转页面 读取到表单的数据(登录界面跳转)
首先是 登录页面![图片说明](https://img-ask.csdn.net/upload/202002/03/1580718431_33631.png)![图片说明](https://img-ask.csdn.net/upload/202002/03/1580719334_797627.png) 然后是 servlet 和 它继承的servlet工具类 ![图片说明](https://img-ask.csdn.net/upload/202002/03/1580718521_814286.png)![图片说明](https://img-ask.csdn.net/upload/202002/03/1580718528_521030.png) 再就是登陆成功 的界面(想法是读取到表单经过servlet的值) ![图片说明](https://img-ask.csdn.net/upload/202002/03/1580718575_312965.png) 浏览器截图 ![图片说明](https://img-ask.csdn.net/upload/202002/03/1580718656_389172.png) 小白一枚 请多指教十分感谢
使用python以YCbCr读取图片,如何把Y通道的数据提取为tensorflow张量?
使用python以YCbCr读取图片,如何把Y通道的数据提取为tensorflow张量?
tensorflow读取文件时出现decode错误
![图片说明](https://img-ask.csdn.net/upload/201909/30/1569847015_825245.png) 这是我的代码,在第三行那里读取文件名时出现这个错误, list_files这个函数在tensorflow的文档中时这样的: ![图片说明](https://img-ask.csdn.net/upload/201909/30/1569847319_126135.png) 应该如何解决这个问题呢?
请问有没有人从mysql数据库读取数据在网页上显示不对?
django2.2项目,从mysql获取数据显示字段,但是显示的是字段的属性,如下,请问有谁遇到过吗? ![图片说明](https://img-ask.csdn.net/upload/202002/02/1580634120_810309.png) 数据行数获取倒是正确的,就是显示的不对, 代码如下: ![图片说明](https://img-ask.csdn.net/upload/202002/02/1580634264_945898.png) ![图片说明](https://img-ask.csdn.net/upload/202002/02/1580634304_192354.png) 请知道的帮帮忙,谢谢了
tensorflow批量读取图片出错
# -*- coding: utf-8 -*- import tensorflow as tf import numpy as np import os import matplotlib.pyplot as plt #训练样本在本地磁盘中的地址 file_dir='/home/lvlulu/Test-Train/Microfibers' # 这里是输入数据的地址 batch_size = 10 def get_files(file_dir): lung_img = []; label_lung_img = []; for file in os.listdir(file_dir): lung_img.append( file_dir + file) label_lung_img.append(1) image_list = np.hstack((lung_img)) label_list = np.hstack((label_lung_img)) temp = np.array([lung_img, label_lung_img]).T #利用shuffle打乱数据 np.random.shuffle(temp) image_list = list(temp[:,0]) label_list = list(temp[:,1]) label_list = [int(i) for i in label_list] return image_list, label_list def get_batch(image,label): image_W, image_H = 221, 181 #batch_size = 10 #将python.list类型转换成tf能够识别的格式 image=tf.cast(image,tf.string) label=tf.cast(label,tf.int32) #产生一个输入队列queue epoch_num = 50 #防止无限循环 input_queue=tf.train.slice_input_producer([image,label], num_epochs=epoch_num) label=input_queue[1] image_contents=tf.read_file(input_queue[0]) #print(image_contents) #将图像解码,不同类型的图像不能混在一起,要么只用jpeg,要么只用png等。 image=tf.image.decode_jpeg(image_contents, channels = 3) #print(image) #将数据预处理,对图像进行旋转、缩放、裁剪、归一化等操作,让计算出的模型更健壮。 image=tf.image.resize_image_with_crop_or_pad(image,image_W,image_H) image=tf.image.per_image_standardization(image) #print(image) #生成batch min_after_dequeue=10 capacity=min_after_dequeue+5*batch_size image_batch,label_batch=tf.train.shuffle_batch( [image,label], batch_size=batch_size, num_threads=64, capacity=capacity, min_after_dequeue=min_after_dequeue ) #重新排列标签,行数为[batch_size] #label_batch=tf.reshape(label_batch,[batch_size]) image_batch = tf.reshape(image_batch,[batch_size,image_W,image_H,3]) image_batch=tf.cast(image_batch,np.float32) #print(image_batch) return image_batch, label_batch if __name__ == "__main__": image_list, label_list = get_files(file_dir) image_batch, label_batch = get_batch(image_list, label_list) print(image_batch) with tf.Session() as sess: ##初始化工作 sess.run(tf.global_variables_initializer()) sess.run(tf.local_variables_initializer()) i = 0 coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(coord=coord) #print(sess.run([image_batch])) print(label_batch) #回收子线程 coord.request_stop() coord.join(threads) ``` ``` Caused by op u'ReadFile', defined at: File "batch.py", line 80, in <module> image_batch, label_batch = get_batch(image_list, label_list) File "batch.py", line 48, in get_batch image_contents=tf.read_file(input_queue[0]) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/ops/gen_io_ops.py", line 144, in read_file result = _op_def_lib.apply_op("ReadFile", filename=filename, name=name) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op op_def=op_def) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2240, in create_op original_op=self._default_original_op, op_def=op_def) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 1128, in __init__ self._traceback = _extract_stack() NotFoundError (see above for traceback): /home/lvlulu/Test-Train/Microfibers0112.jpg [[Node: ReadFile = ReadFile[_device="/job:localhost/replica:0/task:0/cpu:0"](input_producer/Gather)]] [[Node: Shape_6/_14 = _HostSend[T=DT_INT32, client_terminated=false, recv_device="/job:localhost/replica:0/task:0/gpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_3_Shape_6", _device="/job:localhost/replica:0/task:0/gpu:0"](Shape_6)]] ``` ```
如何区分程序内存的指令区和数据区?
各位大佬,我目前知道,程序被编译后,实际上就是二进制文件。运行的时候,计算机会读取这些数据。但是我不懂的是,程序运行的时候,内存分配有指令区和数据区。计算机按照一定规则来区分哪些内存存的是指令,哪些存的是数据。如果我想用c#或者c++来读取一个程序运行时的内存,怎么区分哪些内存点存的是指令?哪些存的是数据呢?谢谢各位大佬指点哈!
volatile真的能避免DCL单例模式中的指令重排吗
volatile能够使得线程读取共享变量时从主内存中读取,保证了读取的数据一定是最新的,所以在线程A构建instance对象的时候,**即使发生了指令重排**使得线程B得到了一个未经初始化的变量,由于volatile的作用,线程B还是得重新从主内存中获取最新的数据。
小程序代码更换后读不到数据,救急?
第一张图片能读取到数据,第二张就读取不到了? ``` ```![图片说明](https://img-ask.csdn.net/upload/202002/05/1580883344_276560.jpg)![图片说明](https://img-ask.csdn.net/upload/202002/05/1580883354_149470.jpg)
flume 读取csv数据时,发生数据被截取
flume---hdfs sink写的文件。 大概是由于一行数据大小超过16个字节,导致flum在event时,把一条数据截取成两段 ![图片说明](https://img-ask.csdn.net/upload/202001/16/1579146530_754802.png) 大致去网上查找了一些资料,都说是EventHelper 中的DEFAULT_MAX_BYTES问题,但都没给出解决问题答案!我想让event body读取整行数据!麻烦各路大神,帮帮忙!急!!! ``` private static final int DEFAULT_MAX_BYTES = 16; ``` 相关资料: https://www.maiyewang.com/archives/23888
c语言如何删除文本文件的内容,和读取指定文件夹里的文件?
具体来说,逐行读取部分的文件,读取其中部分数据,判断后决定是否删除本行数据,文件每天都在更新,想达到放入指定文件夹就可以读取并且删除部分不合格数据的功能,我是个c萌新,求大家帮个忙,谢谢!
Mfc与图像处理关于读取二进制图像数据
有一些二进制图像数据.要求写读取裸图像信息的程序。该怎么写啊?用到opencv
MFC怎么读取TXT中自己想要的数据
![图片说明](https://img-ask.csdn.net/upload/202001/14/1578977304_128472.png)![图片说明](https://img-ask.csdn.net/upload/202001/14/1578977315_361489.png) 我想要把初始化文件的数值填入到程序对应的EDIT控件中,现在只会读取文件但不会提取重要信息,求解答,谢谢
大恒相机使用opencv读取图像,显示不正确问题!
![图片说明](https://img-ask.csdn.net/upload/202001/21/1579573683_614453.jpg) 就是简单的打开大恒相机,输出一下图像,但是显示不正确,图像如下。![图片说明](https://img-ask.csdn.net/upload/202001/21/1579573852_841217.jpg)
微信小程序如何展示星级评分
根据https://blog.csdn.net/qq_35713752/article/details/78770260 做的一个微信评分小程序 我想存这些评分到云数据库,然后另一个页面读取出来。 那么请问evaluations的id与star要怎么存和怎么读取?
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
阿里面试官问我:如何设计秒杀系统?我的回答让他比起大拇指
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图和个人联系方式,欢迎Star和指教 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Android性能优化(4):UI渲染机制以及优化
文章目录1. 渲染机制分析1.1 渲染机制1.2 卡顿现象1.3 内存抖动2. 渲染优化方式2.1 过度绘制优化2.1.1 Show GPU overdraw2.1.2 Profile GPU Rendering2.2 卡顿优化2.2.1 SysTrace2.2.2 TraceView 在从Android 6.0源码的角度剖析View的绘制原理一文中,我们了解到View的绘制流程有三个步骤,即m...
微服务中的Kafka与Micronaut
今天,我们将通过Apache Kafka主题构建一些彼此异步通信的微服务。我们使用Micronaut框架,它为与Kafka集成提供专门的库。让我们简要介绍一下示例系统的体系结构。我们有四个微型服务:订单服务,行程服务,司机服务和乘客服务。这些应用程序的实现非常简单。它们都有内存存储,并连接到同一个Kafka实例。 我们系统的主要目标是为客户安排行程。订单服务应用程序还充当网关。它接收来自客户的请求...
致 Python 初学者们!
作者| 许向武 责编 | 屠敏 出品 | CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 Python 这门编程语言,从2009年开始单一使用 Python 应对所有的开发工作,直至今...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
SpringBoot2.x系列教程(三十六)SpringBoot之Tomcat配置
Spring Boot默认内嵌的Tomcat为Servlet容器,关于Tomcat的所有属性都在ServerProperties配置类中。同时,也可以实现一些接口来自定义内嵌Servlet容器和内嵌Tomcat等的配置。 关于此配置,网络上有大量的资料,但都是基于SpringBoot1.5.x版本,并不适合当前最新版本。本文将带大家了解一下最新版本的使用。 ServerProperties的部分源...
Python绘图,圣诞树,花,爱心 | Turtle篇
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。 公众号回复【进群】沟通交流吧,QQ扫码进群学习吧 微信群 QQ群 1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle()...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o...
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ...... ...
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。 再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。 下文是原回答,希望能对你能有所启发。 如果我说,这个世界上人真的分三六九等,...
2020年全新Java学习路线图,含配套视频,学完即为中级Java程序员!!
新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 传智播客于2020年升级了Java学习线路图,硬核升级,免费放送! 学完你就是中级程序员,能更快一步找到工作! 一、Java基础 JavaSE基础是Java中级程序员的起点,是帮助你从小白到懂得编程的必经之路。 在Java基础板块中有6个子模块的学...
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合...
爬取薅羊毛网站百度云资源
这是疫情期间无聊做的爬虫, 去获取暂时用不上的教程 import threading import time import pandas as pd import requests import re from threading import Thread, Lock # import urllib.request as request # req=urllib.request.Requ...
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名...
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计...
HTML5适合的情人节礼物有纪念日期功能
前言 利用HTML5,css,js实现爱心树 以及 纪念日期的功能 网页有播放音乐功能 以及打字倾诉感情的画面,非常适合情人节送给女朋友 具体的HTML代码 具体只要修改代码里面的男某某和女某某 文字段也可自行修改,还有代码下半部分的JS代码需要修改一下起始日期 注意月份为0~11月 也就是月份需要减一。 当然只有一部分HTML和JS代码不够运行的,文章最下面还附加了完整代码的下载地址 &lt;!...
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问